जवाबों:
आप चाहते हैं setInterval()
:
var intervalID = setInterval(function(){alert("Interval reached");}, 5000);
SetInterval () का पहला पैरामीटर भी मूल्यांकन किए जाने वाले कोड का एक स्ट्रिंग हो सकता है।
आप एक आवधिक कार्य को क्लियर कर सकते हैं:
clearInterval(intervalID);
setInterval()
सवाल का सही जवाब है, कोई फर्क नहीं पड़ता पैरामीटर। यह केवल एक उदाहरण है, और दोनों विधियाँ परिभाषा के अनुसार सही हैं।
कृपया ध्यान दें कि setInterval () अक्सर आवधिक निष्पादन के लिए सबसे अच्छा समाधान नहीं है - यह वास्तव में इस बात पर निर्भर करता है कि आप किस जावास्क्रिप्ट को वास्तव में समय-समय पर कॉल कर रहे हैं।
जैसे। यदि आप 1000 इंच की अवधि के साथ सेटइंटरवल () का उपयोग करते हैं और आवधिक फ़ंक्शन में आप एक अजाक्स कॉल करते हैं जो कभी-कभी 2 सेकंड लेता है तो आपको वापस लौटने के लिए एक और अजाक्स कॉल करना होगा पहले प्रतिक्रिया वापस मिलने से पहले। यह आमतौर पर अवांछनीय है।
कई पुस्तकालयों में समय-समय पर विधियाँ होती हैं जो सेटलाइट के उपयोग के नुकसान से रक्षा करती हैं जैसे कि नेल्सन द्वारा दिया गया प्रोटोटाइप उदाहरण।
उस फ़ंक्शन के साथ अधिक मजबूत आवधिक निष्पादन प्राप्त करने के लिए जिसमें jQuery ajax कॉल है, कुछ इस तरह से विचार करें:
function myPeriodicMethod() {
$.ajax({
url: ...,
success: function(data) {
...
},
complete: function() {
// schedule the next request *only* when the current one is complete:
setTimeout(myPeriodicMethod, 1000);
}
});
}
// schedule the first invocation:
setTimeout(myPeriodicMethod, 1000);
एक अन्य दृष्टिकोण सेटटाइमआउट का उपयोग करना है लेकिन एक चर में बीता समय को ट्रैक करना और फिर प्रत्येक फ़ंक्शन पर गतिशील रूप से वांछित अंतराल के करीब के रूप में एक फ़ंक्शन को निष्पादित करने के लिए टाइमआउट विलंब को सेट करना है लेकिन कभी भी तेजी से प्रतिक्रियाएं प्राप्त नहीं कर सकते।
सभी के पास एक सेटटाइमआउट / सेटइंटरवल समाधान पहले से ही है। मुझे लगता है कि यह नोट करना महत्वपूर्ण है कि आप फ़ंक्शन को पास कर सकते हैं, केवल तार नहीं। इसका वास्तव में स्ट्रिंग्स के बजाय वास्तविक कार्यों को पारित करने के लिए शायद थोड़ा "सुरक्षित" है जो उन कार्यों के लिए "विकसित" होगा।
// example 1
function test() {
alert('called');
}
var interval = setInterval(test, 10000);
या:
// example 2
var counter = 0;
var interval = setInterval(function() { alert("#"+counter++); }, 5000);
पुराना सवाल लेकिन .. मुझे समय-समय पर टास्क रनर की भी जरूरत थी और टास्कटीमर लिखा । यह भी उपयोगी है जब आपको विभिन्न अंतरालों पर कई कार्य चलाने की आवश्यकता होती है।
// Timer with 1000ms (1 second) base interval resolution.
var timer = new TaskTimer(1000)
// Add task(s) based on tick intervals.
timer.addTask({
name: 'job1', // unique name of the task
tickInterval: 5, // run every 5 ticks (5 x interval = 5000 ms)
totalRuns: 10, // run 10 times only. (set to 0 for unlimited times)
callback: function (task) {
// code to be executed on each run
console.log(task.name + ' task has run ' + task.currentRuns + ' times.');
}
});
// Start the timer
timer.start();
TaskTimer
ब्राउज़र और नोड दोनों में काम करता है। सभी सुविधाओं के लिए प्रलेखन देखें ।
आप setInterval () और setTimeout () पर एक नज़र रखना चाहेंगे।
यहाँ एक अच्छा ट्यूटोरियल लेख है ।
हाँ - पर एक नज़र डालें setInterval
औरsetTimeout
निश्चित समय पर कोड को क्रियान्वित करने के लिए। setInterval समय-समय पर कोड निष्पादित करने के लिए उपयोग करने वाला होगा।
एक डेमो देखें और उपयोग के लिए यहां उत्तर दें
चूंकि आप चाहते हैं कि फ़ंक्शन समय-समय पर निष्पादित हो , तो setInterval का उपयोग करें
मूल तरीका वास्तव में setInterval()
/ है clearInterval()
, लेकिन यदि आप पहले से ही प्रोटोटाइप लाइब्रेरी का उपयोग कर रहे हैं, तो आप PeriodicalExecutor का लाभ उठा सकते हैं:
new PeriodicalUpdator(myEvent, seconds);
यह ओवरलैपिंग कॉल को रोकता है। से http://www.prototypejs.org/api/periodicalExecuter :
"यह आपको कॉलबैक फ़ंक्शन के कई समानांतर निष्पादनों के खिलाफ ढाल देता है, क्या इसे निष्पादित करने के लिए दिए गए अंतराल से अधिक समय लेना चाहिए (यह एक आंतरिक" चल रहा है "झंडा, जो कॉलबैक फ़ंक्शन में अपवादों के खिलाफ परिरक्षित है)। यह विशेष रूप से यदि आप करते हैं। दिए गए अंतराल पर उपयोगकर्ता के साथ बातचीत करने के लिए एक का उपयोग करें (उदाहरण के लिए एक संकेत या पुष्टिकरण कॉल का उपयोग करें): यह कई संदेश बॉक्स से बचने के लिए प्रतीक्षा कर रहा है। "