अन्य प्रोग्रामिंग भाषाओं के विपरीत, जावास्क्रिप्ट में एक अंतर्निहित नींद विधि नहीं है। इसलिए आप Node.js प्रोग्राम को रोकने के लिए केवल एक स्लीप () फ़ंक्शन को कॉल नहीं कर सकते। हालाँकि, ऐसे और भी तरीके हैं जिनसे आप किसी प्रोग्राम को एक निर्दिष्ट समय के लिए प्रतीक्षा करवा सकते हैं।
यह ट्यूटोरियल तीन दृष्टिकोणों पर चर्चा करता है: सेटटाइमआउट, एसिंक/प्रतीक्षा, और नींद-वादा पैकेज।
एक विशिष्ट समय की प्रतीक्षा करने के लिए सेटटाइमआउट () का उपयोग करना
सेटटाइमआउट () एक निर्धारित समय बीत जाने के बाद रनटाइम को निष्पादित करने के लिए फ़ंक्शन शेड्यूल कोड। यह एक फ़ंक्शन और मिलीसेकंड में देरी का समय स्वीकार करता है। यहाँ वाक्य रचना है:
सेटटाइमआउट(समारोह(), टाइमइनएमएस)
उदाहरण के लिए, मान लें कि आपके पास एक फ़ंक्शन था जो कंसोल पर प्रिंट करता है:
समारोहप्रिंटवाक्य() {
कंसोल.लॉग("सेटटाइमआउट का उपयोग करना ()")
}
दो सेकंड बीत जाने के बाद उपरोक्त फ़ंक्शन को चलाने के लिए, फ़ंक्शन और 2000ms के विलंब समय को पास करें सेटटाइमआउट () समारोह:
सेटटाइमआउट (प्रिंटसेंटेंस, 2000)
हालांकि यह काम करता है, इसकी गारंटी नहीं है कि आपका फ़ंक्शन ठीक दो सेकंड के बाद चलेगा। इसमें निश्चित रूप से कम से कम इतना समय लगेगा, लेकिन इसमें अधिक समय लग सकता है।
क्या सेटटाइमआउट () सटीक है?
हाँ, लेकिन कुछ चेतावनियों के साथ। सेटटाइमआउट () एक अतुल्यकालिक जावास्क्रिप्ट फ़ंक्शन जिसका अर्थ है कि यह गैर-अवरुद्ध है। आपके द्वारा शेड्यूल किया गया कोड ईवेंट लूप में जोड़ दिया जाता है जबकि आपका शेष प्रोग्राम जारी रहता है।
विलंब समय बीत जाने के बाद, आपका प्रोग्राम शेड्यूल किए गए कोड को निष्पादित करेगा, लेकिन केवल तभी जब वह ऐसा करने के लिए स्वतंत्र हो। यदि अन्य कोड कॉल स्टैक में है, तो यह पहले निष्पादित होगा, भले ही शेड्यूल किया गया कोड चलने वाला हो। यह वह जगह है जहां अतिरिक्त विलंब समय हो सकता है, इसलिए अशुद्धि।
निम्नलिखित कार्यक्रम पर विचार करें।
कंसोल.लॉग("हैलो वर्ल्ड!")
समारोहप्रिंटवाक्य() {
कंसोल.लॉग("सेटटाइमआउट का उपयोग करना ()")
}
सेटटाइमआउट (प्रिंटसेंटेंस, 2000)
कंसोल.लॉग("पूर्ण")
जब आप इसे चलाते हैं तो कंसोल क्या प्रदर्शित करेगा:
हैलो वर्ल्ड!
पूर्ण
सेटटाइमआउट का उपयोग करना ()
यह कार्यक्रम एक देरी का परिचय देता है, लेकिन यह केवल उस कोड को विलंबित करता है जिसे वह पास करता है सेटटाइमआउट (). शेष कार्यक्रम जारी रहता है, निर्धारित कोड केवल अवधि समाप्त होने के बाद ही इसे बाधित करता है। यदि आप इस सभी कोड को क्रम में चलाना चाहते हैं, तो बीच में एक विराम के साथ, का उपयोग कर सेटटाइमआउट () काम नहीं कर पाया।
एक विकल्प सिंक्रोनस कोड लिखना है जो कि जब तक आपको आवश्यकता हो तब तक निष्पादन को रोक देगा। उदाहरण के लिए, आप a. का उपयोग कर सकते हैं जबकि ऐसा विलंब समय समाप्त होने तक निष्पादन थ्रेड को अवरुद्ध करने के लिए लूप:
समारोहविलंब(एमएस) {
स्थिरांक तिथि = दिनांक।अभी();
होने देना वर्तमान दिनांक = व्यर्थ;करना {
वर्तमान दिनांक = दिनांक।अभी();
} जबकि (वर्तमान दिनांक - दिनांक}
कंसोल.लॉग("नमस्ते दुनिया");
देरी (2000);
कंसोल.लॉग("2 सेकंड के बाद प्रिंट हो जाएगा!");
विलंब() फ़ंक्शन तब तक लूप करता है जब तक कि वर्तमान समय इसके शुरुआती समय के साथ-साथ देरी के बराबर या उससे अधिक न हो। इस दृष्टिकोण का नकारात्मक पक्ष यह है कि यह सीपीयू गहन है, खासकर बड़ी देरी के साथ। करते हैं...जबकि लूप प्रत्येक मिलीसेकंड के बाद शेष समय की गणना करना है।
Node.js प्रोग्राम को विलंबित करने के लिए Async/प्रतीक्षा का उपयोग करना
एक इंतजार एक वादा हल होने तक अभिव्यक्ति निष्पादन को रोक देती है। यह आपको एसिंक्रोनस कोड चलाने देता है जैसे कि यह सिंक्रोनस था, लेकिन मैन्युअल रूप से निष्पादन को अवरुद्ध करने से अधिक कुशलता से। आप केवल चिह्नित फ़ंक्शन के अंदर प्रतीक्षा का उपयोग कर सकते हैं अतुल्यकालिक.
समारोहविलंब(समय) {
वापसीनवीन ववायदा(समाधान => सेटटाइमआउट (संकल्प, समय));
}अतुल्यकालिकसमारोहप्रिंटवाक्य() {
कंसोल.लॉग("नमस्ते दुनिया")
इंतजार विलंब(2000);
कंसोल.लॉग("2 सेकंड के बाद प्रिंट हो जाएगा");
}
प्रिंटसेंटेंस ();
यह उपरोक्त कार्यक्रम का आउटपुट है:
नमस्ते दुनिया
2 सेकंड के बाद प्रिंट हो जाएगा
नींद-वादा पैकेज का उपयोग करना
नींद का वादा पैकेज Node.js प्रोग्राम को रोकने की प्रक्रिया को सरल करता है। आपको केवल इसे कॉल करने और मिलीसेकंड में देरी का समय निर्दिष्ट करने की आवश्यकता है।
इसे npm के माध्यम से स्थापित करके प्रारंभ करें:
NPM इंस्टॉलसोना-वायदा
यहां एक उदाहरण दिया गया है कि आप इसे अपने कार्यक्रम में कैसे उपयोग कर सकते हैं:
स्थिरांक नींद = ज़रूरत होना('नींद-वादा');
(अतुल्यकालिक () => {
कंसोल.लॉग("नमस्ते दुनिया।");
इंतजार सोना(2000);
कंसोल.लॉग("दो सेकंड के बाद प्रिंट हो जाएगा।");
})();
जब आप प्रोग्राम चलाते हैं, तो आउटपुट निम्नानुसार होगा।
नमस्ते दुनिया।
दो सेकंड के बाद प्रिंट हो जाएगा।
एक उपयुक्त दृष्टिकोण का चयन
Node.js में स्लीप फंक्शनलिटी को लागू करना मुश्किल हो सकता है। इसके बारे में कैसे जाना है, यह तय करते समय, विचार करें कि आप क्या हासिल करना चाहते हैं। यदि आप कुछ कोड को कम से कम समय के लिए विलंबित करना चाहते हैं, सेटटाइमआउट () एक अच्छा विकल्प है। लेकिन अगर आप अपने पूरे कार्यक्रम के निष्पादन को रोकना चाहते हैं, तो आपको इसका उपयोग करना चाहिए async/प्रतीक्षा.
तुल्यकालिक बनाम। अतुल्यकालिक प्रोग्रामिंग: वे कैसे भिन्न हैं?
आगे पढ़िए
संबंधित विषय
- प्रोग्रामिंग
- वेब विकास
- प्रोग्रामिंग
- जावास्क्रिप्ट
लेखक के बारे में
मैरी गैथोनी एक सॉफ्टवेयर डेवलपर हैं जिन्हें तकनीकी सामग्री बनाने का जुनून है जो न केवल सूचनात्मक है बल्कि आकर्षक भी है। जब वह कोडिंग या लेखन नहीं कर रही होती है, तो उसे दोस्तों के साथ घूमने और बाहर रहने में मज़ा आता है।
हमारे समाचार पत्र के सदस्य बनें
तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!
सब्सक्राइब करने के लिए यहां क्लिक करें