2011-05-13 14 views
24

मैं follwoing कोड betwen में निष्पादन में देरी करना चाहते हैं में निम्नलिखित के बीच में निष्पादन में देरी करने के लिए:मेरी जावास्क्रिप्ट

$("#myName").val("Tom"); 
///delay by 3s 
$("#YourName").val("Jerry"); 
//delay by 3s 

$("#hisName").val("Kids"); 
+0

[संभावित डुप्लिकेट] (http://stackoverflow.com/questions/ 951021/जावास्क्रिप्ट-नींद) - जावास्क्रिप्ट नींद –

उत्तर

57

आप उस के लिए setTimeout उपयोग कर सकते हैं:

setTimeout(function() { 
    // Your code here 
}, delayInMilliseconds); 

उदाहरण के लिए:

$("#myName").val("Tom"); 

/// wait 3 seconds 
setTimeout(function() { 
    $("#YourName").val("Jerry"); 

    /// wait 3 seconds 
    setTimeout(function() { 
     $("#hisName").val("Kids"); 
    }, 3000); 
}, 3000); 

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

तो मान लें कि आपके पास output नामक फ़ंक्शन था जो पृष्ठ पर टेक्स्ट संलग्न करता था। इस के उत्पादन:

foo(); 
function foo() { 
    var counter = 0; 

    output("A: " + counter); 
    ++counter; 
    setTimeout(function() { 
     output("B: " + counter); 
     ++counter; 
     setTimeout(function() { 
      output("C: " + counter); 
      ++counter; 
     }, 1000); 
    }, 1000); 
    output("D: " + counter); 
    ++counter; 
} 

... है (सेकंड के एक जोड़े के बाद):

A: 0 
D: 1 
B: 2 
C: 3

ध्यान दें कि की दूसरी पंक्ति। शेष foo का कोड किसी भी निर्धारित कार्य से पहले चलता है, और इसलिए हम B लाइन से पहले D लाइन देखते हैं।

setTimeout रिटर्न एक हैंडल (जो एक गैर शून्य संख्या है) आप कॉलबैक को रद्द करने से पहले ऐसा होता है इस्तेमाल कर सकते हैं:

var handle = setTimeout(myFunction, 5000); 
// Do this before it runs, and it'll never run 
clearTimeout(handle); 

वहाँ भी है संबंधित setInterval/clearInterval जो एक ही बात करता है, लेकिन बार-बार आपके द्वारा निर्दिष्ट अंतराल पर (जब तक आप इसे रोक नहीं देते)।

4

आप सेटटाइमआउट फ़ंक्शन का उपयोग कर सकते हैं। मुझे लगता है कि वाक्य रचना

window.setTimeout('$("#YourName").val("Jerry")',3000); 
+4

दलाई लामा को पारदर्शी करने के लिए: यदि आप इससे बच सकते हैं तो 'सेटटाइमआउट' के साथ तारों का कभी भी उपयोग न करें। आप हमेशा इससे बच सकते हैं। –

+1

वह एक बुद्धिमान व्यक्ति है, कि लामा लड़का – Gareth

+0

वह सबसे बुद्धिमान है :) आप सही हैं, मुझे स्ट्रिंग में जेएस कोड डालने के बारे में अस्वीकरण करना चाहिए था। – Jad

1

है आप ब्राउज़र पर ताला लगा के बिना नहीं "देरी" जावास्क्रिप्ट में कर सकते हैं, यानी उपयोगकर्ता अपना माउस नहीं ले जा सकता है या कुछ भी क्लिक नहीं कर सकता (3+ सेकंड के लिए अवांछित!)।

बजाय, आप एक समय समाप्ति है, जो कोड भविष्य में कुछ समय के नामित निष्पादित करेंगे स्थापित करने पर गौर करना चाहिए ...

$("#myName").val("Tom"); 
setTimeout(function() { 
    $("#YourName").val("Jerry"); 

    setTimeout(function() { 
     $("#hisName").val("Kids"); 
    }, 3000); 
}, 3000); 

आप setTimeout यहाँ के लिए दस्तावेज़ की जाँच कर सकते हैं: https://developer.mozilla.org/en/window.setTimeout। इसकी मूल बातें यह है कि आप या तो एक पैरामीटर संदर्भ, या एक स्ट्रिंग (जिसे टाला जाना चाहिए), पहले पैरामीटर के रूप में, दूसरे पैरामीटर के साथ यह निर्दिष्ट करता है कि कोड के कितने मिलीसेकंड में देरी होनी चाहिए।

2

तो देरी हमेशा एक ही (अपने उदाहरण में 3s), आप नेस्टेड कोड से बचने और setTimeout के बजाय setInterval का उपयोग कर सकते है:

var i 
    , ids = ["myName", "YourName", "hisName"] 
    , names = ["Tom", "Jerry", "Kids"]; 

i = setInterval(function() { 
    if (ids.length > 0) { 
     $("#" + ids.shift()).val(names.shift()); 
    } else { 
     clearInterval(i); 
    } 
}, 3000); 
संबंधित मुद्दे