मैं setIntervalटाइमर को 0 पर कैसे रीसेट करूं ?
var myTimer = setInterval(function() {
console.log('idle');
}, 4000);
मैंने कोशिश की clearInterval(myTimer)लेकिन वह पूरी तरह से अंतराल को रोक देता है। मैं चाहता हूं कि यह 0 से फिर से शुरू हो।
मैं setIntervalटाइमर को 0 पर कैसे रीसेट करूं ?
var myTimer = setInterval(function() {
console.log('idle');
}, 4000);
मैंने कोशिश की clearInterval(myTimer)लेकिन वह पूरी तरह से अंतराल को रोक देता है। मैं चाहता हूं कि यह 0 से फिर से शुरू हो।
जवाबों:
यदि "पुनरारंभ" द्वारा, आप इस समय एक नया 4 सेकंड का अंतराल शुरू करना चाहते हैं, तो आपको टाइमर को रोकना और पुनः आरंभ करना होगा।
function myFn() {console.log('idle');}
var myTimer = setInterval(myFn, 4000);
// Then, later at some future time,
// to restart a new 4 second interval starting at this exact moment in time
clearInterval(myTimer);
myTimer = setInterval(myFn, 4000);
तुम भी एक रीसेट सुविधा प्रदान करता है कि एक छोटे टाइमर वस्तु का उपयोग कर सकते हैं:
function Timer(fn, t) {
var timerObj = setInterval(fn, t);
this.stop = function() {
if (timerObj) {
clearInterval(timerObj);
timerObj = null;
}
return this;
}
// start timer using current settings (if it's not already running)
this.start = function() {
if (!timerObj) {
this.stop();
timerObj = setInterval(fn, t);
}
return this;
}
// start with new or original interval, stop current interval
this.reset = function(newT = t) {
t = newT;
return this.stop().start();
}
}
उपयोग:
var timer = new Timer(function() {
// your function here
}, 5000);
// switch interval to 10 seconds
timer.reset(10000);
// stop the timer
timer.stop();
// start the timer
timer.start();
वर्किंग डेमो: https://jsfiddle.net/jfriend00/t17vz506/
एक बार जब आप एक बार फिर से clearIntervalआप का उपयोग कर अंतराल को साफ कर सकते हैं setInterval। और कॉलबैक को दोहराने से बचने के लिए इसे एक अलग फ़ंक्शन के रूप में बाह्य करें:
var ticker = function() {
console.log('idle');
};
फिर:
var myTimer = window.setInterval(ticker, 4000);
फिर जब आप पुनः आरंभ करने का निर्णय लेते हैं:
window.clearInterval(myTimer);
myTimer = window.setInterval(ticker, 4000);
setInterval(myTimer, 4000), यह होना चाहिए setInterval(ticker, 4000);।