इवेंट रिंग क्या है?
इवेंट लूप ही Node.js को सहज और कुशल बनाता है।
यह सिस्टम को अतुल्यकालिक संचालन सौंपता है और कॉलबैक के माध्यम से उनके परिणामों को संसाधित करता है, जिससे Node.js को एक ही थ्रेड के साथ हजारों समवर्ती कनेक्शन प्रबंधित करने की अनुमति मिलती है।
निर्बाध गति
लंबे I/O ऑपरेशन महत्वपूर्ण थ्रेड को ब्लॉक नहीं करते हैं
उच्च दक्षता
कम संसाधनों में अधिक प्रदर्शन
एकाधिक लिंक
एक साथ हजारों कनेक्शन संभालता है
कॉलबैक आधार
कॉलबैक के साथ संचालन प्रबंधित करता है
इवेंट लूप कैसे काम करता है?
Node.js :
क्रिटिकल स्क्रिप्ट चलाएँ
पहले सिंक्रोनाइज़ेशन कोड चलाता है
सभी सिंक्रनाइज़ेशन कोड तुरंत निष्पादित किए जाएंगे
सूक्ष्म कार्य निष्पादित करें
वादे और प्रक्रिया.नेक्स्टटिक फ़ंक्शन
इनकी उच्च प्राथमिकता है
टाइमर चालू करें
सेटटाइमआउट और सेटइंटरवल फ़ंक्शन
निर्दिष्ट समय विलंब के बाद सक्षम किया गया
I/O कॉलबैक सक्षम करें
फ़ाइल स्वरूप, नेटवर्क फ़ंक्शन
पूर्ण I/O परिचालनों का कॉलबैक
प्रक्रिया सेटतत्काल कॉलबैक
setImmediate() फ़ंक्शन
I/O कॉलबैक के तुरंत बाद निष्पादित किया गया
समापन घटनाओं को संभालें
socket.on('close')
कनेक्शन क्लोजर को साफ करता है
उदाहरण: इवेंट लूप अनुक्रम
कोड:
console.log('First');
setTimeout(() => console.log('Third'), 0);
Promise.resolve().then(() => console.log('Second'));
console.log('Fourth');
यह चल रहे क्रम को प्रदर्शित करता है:
सिंक्रोनाइज़ेशन कोड पहले चलता है
'First', 'Fourth'
माइक्रोटास्क (वादे) अगले चरण से पहले चलते हैं
'Second'
टाइमर सबसे अंत में चलेंगे
'Third'
महत्वपूर्ण नोट:
भले ही सेटटाइमआउट में 0 मिलीसेकंड निर्दिष्ट किया गया हो, इसे सिंक्रोनाइज़ेशन कोड के बाद ही निष्पादित किया जाएगा क्योंकि यह इवेंट लूप के टाइमर चरण में पास हो जाता है।
इवेंट लूप चरण
इवेंट लूप विभिन्न प्रकार के कॉलबैक को इस क्रम में संसाधित करता है:
टाइमर
setTimeout, setInterval
I/O कॉलबैक
I/O परिचालन पूर्ण
जैसा
नए I/O ईवेंट पुनर्प्राप्त करता है
सेकंड
तत्काल कॉलबैक सेट करें
बंद
क्लीनअप कॉलबैक (जैसे सॉकेट.ऑन('बंद करें'))
नोट:
प्रत्येक चरण के बीच, Node.js माइक्रोटास्क (वादे) और प्रोसेस.नेक्स्टटिक कॉलबैक निष्पादित करता है।
उदाहरण: इवेंट लूप ग्रिड
कोड:
console.log('1. Start');
// Next tick queue
process.nextTick(() => console.log('2. Next tick'));
// Microtask queue (Promise)
Promise.resolve().then(() => console.log('3. Promise'));
// Timer phase
setTimeout(() => console.log('4. Timeout'), 0);
// Check phase
setImmediate(() => console.log('5. Immediate'));
console.log('6. End');
आउटपुट होगा:
यह प्राथमिकता का क्रम दिखाता है:
- तुल्यकालन कोड- पहले चलता है
- process.nextTick- उच्च प्राथमिकता
- Promises- अगली प्राथमिकता
- टाइमर- इवेंट लूप चरणों में
- चरण की जाँच करें- अंत में
इवेंट लूप महत्वपूर्ण क्यों है?
इवेंट लूप Node.js को एक ही थ्रेड के साथ हजारों समवर्ती कनेक्शनों को संभालने की अनुमति देता है, जो इसे इसके लिए आदर्श बनाता है:
वास्तविक समय अनुप्रयोग
ऐसे एप्लिकेशन जिनमें त्वरित सूचना आदान-प्रदान की आवश्यकता होती है
एपीआई और माइक्रोसर्विसेज
ऐसी सेवाएँ जो एक साथ कई अनुरोधों को संभालती हैं
डेटा स्ट्रीमिंग
बड़े डेटा को टुकड़ों में संसाधित करना
चैट एप्लिकेशन
एकाधिक उपयोगकर्ताओं को त्वरित संदेश
सारांश
Node.js
विभिन्न प्रकार के कॉलबैक की अलग-अलग प्राथमिकताएँ होती हैं
माइक्रोटास्क (वादे) अगले इवेंट लूप चरण से पहले चलते हैं
यह निर्बाध मॉडल उच्च समवर्ती कनेक्शन सक्षम बनाता है
अभ्यास
सही शब्द चुनें।
इवेंट लूप Node.js के लिए है______I/O संचालन करने की अनुमति देता है।