Javascript – 重置setInterval回到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的小计时器对象:

 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 interval, stop current interval this.reset = function(newT) { 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清除间隔,您可以再次设置Interval。 为了避免重复callback,将其作为一个单独的函数进行外部化:

 var ticker = function() { console.log('idle'); }; 

然后:

 var myTimer = window.setInterval(ticker, 4000); 

那么当你决定重新启动时:

 window.clearInterval(myTimer); myTimer = window.setInterval(ticker, 4000);