दिलचस्प पोस्ट
PHP में 2 तिथियों के बीच घंटे की संख्या की गणना करें जावा 8: लैम्ब्दास और अतिभारित तरीकों के साथ अस्पष्टता वेबवेव onreceivedSslError के क्रियान्वयन पर Google Play से सुरक्षा अलर्ट से बचें मैं कैसे ढूँढ सकते हैं कमांड परिणाम बास में सरणियों के रूप में ध्वनि आईफोन सिम्युलेटर में काम नहीं कर रहा है? सी # में एक मशीन का आईपी पता कैसे प्राप्त करें जावास्क्रिप्ट से एंड्रॉइड वेबविवे पर जावा कॉल को कॉल करें मैं xcode5 पर पूर्ण बिल्ड लॉग कैसे देखूं? राइनो.मॉक्स का प्रयोग करके स्थैतिक तरीकों का मजाक उड़ा रहा है php तारीख सत्यापन स्थिर अंतिम फ़ाइल बदलने के लिए प्रतिबिंब का उपयोग करना। एक पाठदृश्य में यूनिकोड द्वारा कैसे सेट इमोजी? एक देशी विंडोज़ अनुप्रयोग में संसाधन में एम्बेड पाठ फ़ाइल आईफोन कंपन बनाना TWIG टेम्प्लेट से सत्र तक पहुंच

जावास्क्रिप्ट में सो जाओ – कार्रवाई के बीच देरी

क्या एक तरीका है कि मैं जावास्क्रिप्ट में एक नींद कैसे कर सकता हूं, इससे पहले कि यह एक और कार्रवाई करता है?

उदाहरण:

var a = 1+3; // Sleep 3 seconds before the next action here var b = a + 4; 

Solutions Collecting From Web of "जावास्क्रिप्ट में सो जाओ – कार्रवाई के बीच देरी"

आप एक समान प्रभाव प्राप्त करने के लिए setTimeout का उपयोग कर सकते हैं:

 var a = 1 + 3; var b; setTimeout(function() { b = a + 4; }, (3 * 1000)); 

यह वास्तव में 'नींद' जावास्क्रिप्ट नहीं है- यह सिर्फ एक निश्चित अवधि (मिलीसेकंड में निर्दिष्ट) के बाद setTimeout को पास किए गए फ़ंक्शन को निष्पादित करता है। हालांकि जावास्क्रिप्ट के लिए नींद समारोह लिखना संभव है, यदि संभव हो तो सेट- setTimeout का उपयोग करना सबसे अच्छा है क्योंकि यह नींद की अवधि के दौरान सब कुछ स्थिर नहीं करता है।

अगर आपको वास्तव में किसी sleep() ज़रूरत है sleep() बस कुछ का परीक्षण करने के लिए लेकिन ध्यान रखें कि ब्राउज़र को अधिकांश समय डिबगिन में क्रैश हो जाएगा, शायद यही कारण है कि आपको वैसे भी इसकी ज़रूरत है। उत्पादन मोड में मैं इस फ़ंक्शन को टिप्पणी करूंगा।

 function pauseBrowser(millis) { var date = Date.now(); var curDate = null; do { curDate = Date.now(); } while (curDate-date < millis); } 

लूप में new Date() उपयोग न करें, जब तक आप मेमोरी, प्रोसेसिंग पावर, बैटरी और संभवत: आपके डिवाइस का जीवनकाल बर्बाद करना नहीं चाहते।

ECMAScript 6 संस्करण, "कोड अवरुद्ध" के लिए उपज वाले जनरेटर का उपयोग करते हुए:

क्योंकि मूल प्रश्न सात साल पहले पोस्ट किया गया था, मैं सटीक कोड के साथ जवाब देने में परेशान नहीं था, क्योंकि यह बहुत आसान है और पहले ही उत्तर दिया है। इससे अधिक जटिल समस्याओं में मदद मिलनी चाहिए, जैसे कि आपको कम से कम दो स्लीप्स की आवश्यकता है, या यदि आप एसिंक्रोनस निष्पादन के क्रम की योजना बना रहे हैं। अपनी आवश्यकताओं को पूरा करने के लिए इसे संशोधित करने के लिए स्वतंत्र महसूस करें

 let sleeptime = 100 function* clock() { let i = 0 while( i <= 10000 ) { i++ console.log(i); // actually, just do stuff you wanna do. setTimeout( ()=> { clk.next() } , sleeptime ) yield } } let clk = clock() clk.next() 

यदि आप setTimeout और setInterval तुलना में कम clunky फ़ंक्शंस चाहते हैं, तो आप उन कार्यों में लपेट कर सकते हैं जो सिर्फ तर्कों के क्रम को उलटाते हैं और उन्हें अच्छे नाम देते हैं:

 function after(ms, fn){ setTimeout(fn, ms); } function every(ms, fn){ setInterval(fn, ms); } 

कॉफी स्क्रिप्ट संस्करण:

 after = (ms, fn)-> setTimeout fn, ms every = (ms, fn)-> setInterval fn, ms 

फिर आप उन्हें अनाम कार्यों के साथ अच्छी तरह से उपयोग कर सकते हैं:

 after(1000, function(){ console.log("it's been a second"); after(1000, function(){ console.log("it's been another second"); }); }); 

अब यह आसानी से "एन मिलिसेकंड्स के बाद, …" (या "हर एन मिलिसेकंड्स, …") के रूप में पढ़ता है

2017 अद्यतन

जावास्क्रिप्ट विकसित हुआ है, क्योंकि इस प्रश्न से पूछा गया था और अब जनरेटर कार्य किया गया है, और नया एसिंक / प्रतीक्षा / वादा शुरू हो रहा है नीचे दो समाधान दिए गए हैं, एक जनरेटर फ़ंक्शन जो कि सभी आधुनिक ब्राउज़रों पर काम करेगा, और दूसरा, नए एसिंक का उपयोग करके / जो अभी तक हर जगह समर्थित नहीं है।

जनरेटर फ़ंक्शन का उपयोग करना:

 'use strict'; let myAsync = (g) => (...args) => { let f, res = () => f.next(), sleep = (ms) => setTimeout(res, ms); f = g.apply({sleep}, args); f.next(); }; let myAsyncFunc = myAsync(function*() { let {sleep} = this; console.log("Sleeping"); yield sleep(3000); console.log("Done"); }); myAsyncFunc(); 

इस समस्या को हल करने के कई तरीके हैं। यदि हम setTimeout फ़ंक्शन का उपयोग करते हैं, तो इसे पहले जानने दें। इस फ़ंक्शन के तीन पैरामीटर हैं: function या code , delay (मिलीसेकंड में) और parameters चूंकि फ़ंक्शन या कोड पैरामीटर आवश्यक है, अन्य वैकल्पिक हैं। एक बार देरी में प्रवेश न करने के बाद , यह शून्य पर सेट हो जाएगा।

setTimeout() बारे में अधिक जानकारी के लिए इस लिंक पर जाएं

सरलीकृत संस्करण:

 var a = 1 + 3; var b; console.log('a = ' + a); setTimeout(function(){ b = a + 4; console.log('b = ' + b); }, 1000); 

उत्पादन:
ए = 4
24 -> सक्रिय टाइमआउट की सूची का संख्या पहचानकर्ता
बी = 8

पैरामीटर पास का उपयोग करना:

 var a = 1 + 3; var b; console.log('a = ' + a); setTimeout(myFunction, 1000, a); function myFunction(a) { var b = a + 4; console.log('b = ' + b); } 

उत्पादन:
ए = 4
25 -> सक्रिय टाइमआउट की सूची का संख्या पहचानकर्ता
बी = 8

ब्राउज़र समर्थन:

 क्रोम फ़ायरफ़ॉक्स एज सफारी ओपेरा
 1.0 1.0 4.0 1.0 4.0