2011-11-15 14 views
20

यदि मेरे पास कोई ऐसा फ़ंक्शन है जो मैं अपने जेएस कोड को तुरंत चलाने के लिए चाहता हूं लेकिन रन के बाद, 2 सेकंड तक प्रतीक्षा करें। इस तर्क को कैसे प्राप्त करें?फ़ंक्शन चलाने के बाद समय की प्रतीक्षा कैसे करें

(नोट: यह सिर्फ उलटा तर्क, setTimeout() के साथ तुलना setTimeout( के बाद से है)। पहली बार की एक निश्चित राशि के लिए इंतजार तो निष्पादित समारोह)

+0

क्या आप कृपया अपने कोड की कुछ पंक्तियां दे सकते हैं? मुझे लगता है कि आप ढूंढ रहे हैं। डेले() लेकिन अभी के लिए निश्चित नहीं है। –

+0

ठीक है, मुझे लगता है कि आपको कुछ और करने से पहले 2s इंतजार करना होगा। अपने फ़ंक्शन को निष्पादित करने के बाद, उस समय के लिए setTimeout() का उपयोग करें ;-) –

+0

लगता है कि आप कॉलिंग फ़ंक्शन पर वापस आने से पहले 2s के लिए प्रतीक्षा करना चाहते हैं। यदि हां, तो उपयोग करने से पहले सेटटाइमआउट() – Rohan

उत्तर

34

बस एक गुमनाम फंक्शन setTimeout के लिए पारित अंदर अपना कोड डाल होगा।

उदा।

functionToRunFirst(); 
setTimeout(function() { 
    // rest of code here 
}, 2000); 
2

क्या "2 सेकंड के लिए प्रतीक्षा" क्या मतलब है? क्या आपका मतलब है कि आप फ़ंक्शन से 2 सेकंड के लिए वापसी को अवरुद्ध करना चाहते हैं?

यदि ऐसा है, तो आप ऐसा नहीं कर सकते हैं। जावास्क्रिप्ट में कोई नींद() फ़ंक्शन नहीं है।

तुम सिर्फ setTimeout का उपयोग करने के लिए()

3

setTimeout का उपयोग कर इसे

function run() {  
    // run this code 

    setTimeout(afterTwoSeconds, 2000);  
} 

function afterTwoSeconds() {  
    // run this code two seconds after executing run. 
} 

// call run 
run(); 
1

कुछ भी नहीं है इसके बाद के संस्करण जवाब के साथ गलत करने के लिए एक ही रास्ता है, लेकिन एक अलग तरीका है:

$("#somethingThatDoesntExist").fadeTo(2000, 1, function() { 
    // two seconds later 
}); 
+1

यह आपके बजाय हैकिश है। क्यों नहीं .delay() 'jquery आपकी पसंद है? –

+0

क्योंकि मुझे .delay() के बारे में पता नहीं था, धन्यवाद! मैंने यह भी सोचा कि ओपी ने jQuery का उल्लेख किया है, लेकिन मुझे गलत लगता है। –

+0

उन्होंने अपने प्रश्न jquery टैग किया था। –

6

मुझे लगता है कि तुम क्या एक टाइमआउट तक कोड के निष्पादन को निलंबित करने का एक तरीका है। कई शौकिया प्रोग्रामर ऐसे निर्माण की कामना करते हैं, लेकिन यह जावास्क्रिप्ट में मौजूद नहीं है। इसकी आवश्यकता नहीं है। जावास्क्रिप्ट setTimeout और setInterval में सभी उद्देश्यों के लिए पूर्ण उम्मीदवार समाधान हैं।

हालांकि, जावास्क्रिप्ट एक शक्तिशाली भाषा है। आप इस मुद्दे को हल करने के लिए अपना खुद का निर्माण कर सकते हैं। नील मिक्स के blog post पर एक नज़र डालें। अपने दृष्टिकोण के साथ आप एक नींद समारोह जो निम्नलिखित लाइनों के साथ इस्तेमाल किया जा सकता बना सकते हैं (ध्यान दें कि वर्तमान में केवल फ़ायरफ़ॉक्स जावास्क्रिप्ट 1.7 का समर्थन करता है):

function mainGeneratorFunction() { 
    functionToRunFirst(); 
    yield sleep(2000); 
    //rest of the code 
} 

हालांकि, के लिए अन्य ब्राउज़रों निराशा नहीं है। आप XHR Sleeping के नाम से जाना जाने वाला हैक का उपयोग कर सकते हैं। इस दृष्टिकोण में आप बस एक सिंक्रोनस XMLHttpRequest का उपयोग सर्वर साइड स्क्रिप्ट को php जैसे कॉल करने के लिए करते हैं, जो तब निर्दिष्ट समय के लिए सोता है और जागने के बाद लौटाता है।

function sleep(microseconds) { 
    var request = new XMLHttpRequest(); 
    request.open("GET", "sleep.php?time=" + microseconds, false); 
    request.send(); 
} 

functionToRunFirst(); 
sleep(2000000); 
//rest of the code 

php नींद समारोह इस प्रकार है:: जावास्क्रिप्ट कोड इस प्रकार है

<?php 
    usleep($_GET["time"]); 
?> 
1

आपकी ओर से कुछ भरने आउट दिया, इस आधे सेकंड टाइमर के साथ 5 बार चलाना चाहिए

var counter = 0; 
var arrayOfPicture = []; //fill this out 

function gifSimulator() { 

    //use the counter as an index in the array, and change the image source of your element with that. 


    if (counter < 5) { 

     setTimeout(function() { 

      counter++; 

      gifSimlulator(); 

     }, 500); //lets wait half a second 
    } 
} 
0

मुझे नहीं पता कि तुम लोग इन्हें क्यों जा रहे हैं। मुझे विश्वास है कि हम इसे डेट ऑब्जेक्ट का उपयोग करके कर सकते हैं। पहले दिनांक मान लें और सेट अंतराल फ़ंक्शन का उपयोग तब तक प्रतीक्षा करें जब तक हम निर्दिष्ट अंतराल प्राप्त न करें (नई तिथि प्राप्त करें और अंतर की जांच करें)। एक बार जब हम अंतराल फ़ंक्शन को रीसेट कर लेते हैं और उसके बाद आपके कोड के साथ आगे बढ़ सकते हैं।

संबंधित मुद्दे