सबसे पहले, मुझे एहसास है कि मुझे इस सवाल का जवाब देने में देर हो गई है।
सिंक्रोनस और एसिंक्रोनस पर चर्चा करने से पहले, आइए हम संक्षेप में देखें कि प्रोग्राम कैसे चलते हैं।
में तुल्यकालिक मामले, प्रत्येक कथन कम्प्लिट्स से पहले अगले बयान चलाया जाता है। इस मामले में कार्यक्रम का मूल्यांकन कथनों के क्रम में किया जाता है।
यह अतुल्यकालिक है जावास्क्रिप्ट में काम करता है। जावास्क्रिप्ट इंजन में दो भाग होते हैं, एक भाग जो कोड को देखता है और संचालन को और दूसरा जो कतार को संसाधित करता है। कतार प्रसंस्करण एक धागे में होता है, यही कारण है कि एक समय में केवल एक ही ऑपरेशन हो सकता है।
जब एक एसिंक्रोनस ऑपरेशन (दूसरे डेटाबेस क्वेरी की तरह) देखा जाता है, तो कोड को पार्स किया जाता है और ऑपरेशन को कतार में रखा जाता है, लेकिन इस ऑपरेशन के पूरा होने पर कॉलबैक को चलाने के लिए पंजीकृत किया जाता है। कतार में पहले से ही कई ऑपरेशन हो सकते हैं। कतार के सामने के भाग को संसाधित किया जाता है और कतार से हटा दिया जाता है। एक बार जब डेटाबेस क्वेरी के लिए कार्रवाई की जाती है, तो अनुरोध डेटाबेस को भेजा जाता है और पूरा होने पर कॉलबैक निष्पादित किया जाएगा। इस समय, कतार प्रोसेसर "संभाला" होता है ऑपरेशन अगले ऑपरेशन पर चलता है - इस मामले में
console.log("Hello World");
डेटाबेस क्वेरी अभी भी संसाधित हो रही है, लेकिन कंसोल.लॉग कार्रवाई कतार के सामने है और संसाधित हो जाती है। यह एक तुल्यकालिक ऑपरेशन होने के तुरंत बाद निष्पादित हो जाता है जिसके परिणामस्वरूप आउटपुट "हैलो वर्ल्ड" होता है। कुछ समय बाद, डेटाबेस ऑपरेशन पूरा हो जाता है, तभी क्वेरी के साथ पंजीकृत कॉलबैक को कॉल किया जाता है और संसाधित किया जाता है, चर के मूल्य को पंक्तियों में सेट करता है।
यह संभव है कि एक अतुल्यकालिक ऑपरेशन के परिणामस्वरूप एक और अतुल्यकालिक ऑपरेशन होगा, यह दूसरा ऑपरेशन कतार में रखा जाएगा और जब यह कतार के सामने आएगा तो इसे संसाधित किया जाएगा। एक अतुल्यकालिक ऑपरेशन के साथ पंजीकृत कॉलबैक को कॉल करना, जावास्क्रिप्ट रन टाइम ऑपरेशन के परिणाम को कैसे लौटाता है, यह किया जाता है।
यह जानने का एक सरल तरीका है कि कौन सा जावास्क्रिप्ट ऑपरेशन अतुल्यकालिक है, यह नोट करने के लिए कि क्या उसे कॉलबैक की आवश्यकता है - कॉलबैक वह कोड है जिसे पहला ऑपरेशन पूरा होने पर निष्पादित किया जाएगा। प्रश्न में दो उदाहरणों में, हम देख सकते हैं कि केवल दूसरे मामले में कॉलबैक है, इसलिए यह दोनों का अतुल्यकालिक संचालन है। एक एसिंक्रोनस ऑपरेशन के परिणाम को संभालने की विभिन्न शैलियों के कारण हमेशा ऐसा नहीं होता है।
अधिक जानने के लिए, वादों के बारे में पढ़ें। वादे एक और तरीका है जिसमें एक अतुल्यकालिक ऑपरेशन के परिणाम को संभाला जा सकता है। वादों के बारे में अच्छी बात यह है कि कोडिंग शैली अधिक तुल्यकालिक कोड की तरह महसूस करती है।
नोड 'एफएस' जैसे कई पुस्तकालय, कुछ कार्यों के लिए सिंक्रोनस और अतुल्यकालिक शैली दोनों प्रदान करते हैं। उन मामलों में जहां ऑपरेशन लंबे समय तक नहीं होता है और इसका उपयोग बहुत अधिक नहीं किया जाता है - जैसा कि एक कॉन्फ़िगरेशन फ़ाइल पढ़ने के मामले में - सिंक्रोनस स्टाइल ऑपरेशन के परिणामस्वरूप कोड होगा जो पढ़ने में आसान है।