एसिंक्रोनस फ़ंक्शन्स, प्रोग्राम चलते रहते हैं। यह इंतजार नहीं करता! इस तरह उपयोगकर्ता का प्रतीक्षा समय कम होता है। साथ ही, जावास्क्रिप्ट एक प्रोग्रामिंग भाषा के रूप में स्वयं एसिंक्रोनस है।
उदाहरण के लिए, यदि कोड में हम एक महंगा अनुरोध चला रहे हैं, जिसमें बहुत समय लग सकता है, तो एसिंक्रोनस फ़ंक्शन के मामले में प्रतीक्षा समय बहुत अधिक होगा, और उपयोगकर्ता कुछ और भी नहीं कर पाएगा!
इस प्रकार आमतौर पर हम महंगे और समय लेने वाले ऑपरेशन्स करते समय एसिंक्रोनस कोड का उपयोग करना पसंद करते हैं।
आइए जावास्क्रिप्ट में एसिंक्रोनस फ़ंक्शन का एक उदाहरण लेते हैं:
उदाहरण
console.log('One'); jQuery.get('page.html', function (data) { console.log("Two"); }); console.log('Three');
आउटपुट
One, Two, Three
अब, देखते हैं कि नोड में इवेंट लूप क्या है।
इवेंट लूप एक थ्रेड शेड्यूल के अंदर बनाया जाता है जिसमें ऑपरेशन्स होते हैं जो हमारे थ्रेड को किसी भी समय पर करना चाहिए।
किसी भी Node.js एप्लिकेशन में कॉलबैक्स होते हैं जो विभिन्न घटनाओं जैसे इनकमिंग कनेक्शन, I/O पूरा होना, टाइमआउट समाप्त होना, प्रॉमिस रिजॉल्यूशन आदि की प्रतिक्रिया में निष्पादित होते हैं। मुख्य थ्रेड (जिसे अब हम जानते हैं कि इवेंट लूप है) इन सभी कॉलबैक्स को निष्पादित करता है।
जब इवेंट लूप चल रहे होते हैं, तो प्रत्येक पुनरावृत्ति के लिए नोड जांचता है कि क्या यह किसी एसिंक्रोनस I/O या टाइमर्स की प्रतीक्षा कर रहा है। और यदि कुछ नहीं मिलता है, तो नोड उन्हें बंद कर देता है।