जावास्क्रिप्ट, सिंगल-थ्रेडेड होने के कारण, अन्य भाषाओं में पाए जाने वाले sleep()
फ़ंक्शन के सीधे समकक्ष का अभाव है। रोकने का अनुकरण करने के लिए असिंक्रोनस तकनीकों का उपयोग करने की आवश्यकता होती है। यह लेख दो दृष्टिकोणों का पता लगाता है: एक setTimeout
और प्रॉमिस का उपयोग करके, और दूसरा क्लीनर async/await
सिंटैक्स का उपयोग करके।
विषयवस्तु सारणी
प्रॉमिस के साथ स्लीप फ़ंक्शन कार्यान्वित करना
सबसे सरल तरीका प्रॉमिस के भीतर setTimeout
का उपयोग करता है। यह मुख्य थ्रेड को ब्लॉक करने से बचता है, जिससे आपका एप्लिकेशन उत्तरदायी बना रहता है।
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
sleep(2000)
.then(() => console.log("2 सेकंड के लिए सोया!"))
.catch(error => console.error("एक त्रुटि हुई:", error));
console.log("यह स्लीप फ़ंक्शन पूरा होने से पहले निष्पादित होगा।");
व्याख्या:
sleep(ms)
: यह फ़ंक्शन मिलीसेकंड (ms
) में स्लीप अवधि को तर्क के रूप में लेता है।new Promise(resolve => setTimeout(resolve, ms))
: एक प्रॉमिस बनाया गया है।setTimeout
ms
मिलीसेकंड के बाद कॉल किए जाने के लिएresolve
फ़ंक्शन को शेड्यूल करता है। यह प्रॉमिस को हल करता है, नींद के अंत का संकेत देता है।.then()
: यह हल किए गए प्रॉमिस को संभालता है, स्लीप पूरा होने के बाद इसके भीतर कोड को निष्पादित करता है।.catch()
: यह वैकल्पिक खंड किसी भी त्रुटि को संभालता है जो समय सीमा के दौरान हो सकती है।
यह विधि कुशल है और मुख्य थ्रेड को अवरुद्ध करने के नुकसान से बचाती है। हालाँकि, .then()
का उपयोग कुछ प्रोग्रामरों के लिए कम सहज लग सकता है।
Async/Await के साथ स्लीप फ़ंक्शन कार्यान्वित करना
Async/await एक अधिक पठनीय और यकीनन अधिक सुरुचिपूर्ण समाधान प्रदान करता है। यह प्रॉमिस-आधारित दृष्टिकोण पर बनता है लेकिन असिंक्रोनस प्रवाह को सरल करता है।
async function sleep(ms) {
await new Promise(resolve => setTimeout(resolve, ms));
}
async function myFunction() {
console.log("शुरू हो रहा है...");
await sleep(2000);
console.log("2 सेकंड के लिए सोया!");
}
myFunction();
console.log("यह स्लीप फ़ंक्शन पूरा होने से पहले निष्पादित होगा।");
व्याख्या:
async function sleep(ms)
:async
कीवर्ड एक असिंक्रोनस फ़ंक्शन को दर्शाता है।await new Promise(...)
:await
कीवर्ड प्रॉमिस के हल होने तकsleep
के निष्पादन को रोक देता है। यह ठहराव मुख्य थ्रेड को ब्लॉक नहीं करता है।async function myFunction()
: यह फ़ंक्शन दर्शाता है कि बड़े असिंक्रोनस ऑपरेशन के भीतरsleep
का उपयोग कैसे करें।
async/await
सिंटैक्स असिंक्रोनस कोड को सिंक्रोनस दिखाई देता है, जिससे पठनीयता और रखरखाव में सुधार होता है। यह आम तौर पर इसकी स्पष्टता और उपयोग में आसानी के लिए पसंदीदा दृष्टिकोण है।
दोनों विधियाँ एक ही परिणाम प्राप्त करती हैं, लेकिन async/await
जावास्क्रिप्ट में असिंक्रोनस संचालन को संभालने के लिए अधिक आधुनिक और पठनीय सिंटैक्स प्रदान करता है। उत्पादन कोड में व्यस्त-प्रतीक्षा लूप से बचें; वे आपके एप्लिकेशन को फ्रीज कर देंगे।