如何重置setInterval定时器?
How do I reset the setInterval timer?
如何将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);
如果有人感兴趣,这里是Typescript和next 3版本:]
可组合useInterval.ts
useInterval.ts
export function useInterval (callback: CallableFunction, interval: number): Interval { // Argument interval = milliseconds
return new Interval(callback, interval)
}
class Interval {
private timer = null
constructor (private callback, private interval) {
}
start () {
this.timer = setInterval(this.callback, this.interval)
}
stop () {
clearInterval(this.timer)
this.timer = null
}
restart (interval = 0) {
this.stop()
if (interval) {
this.interval = interval
}
this.start()
}
}
const interval = useInterval(function() {
// your function here
}, 5000);
// Reset the interval and set it to 10s
interval.reset(10000);
// Stop the interval
interval.stop();
// Start the interval
interval.start();
相关文章:
- 如何在php/javascript中制作定时器和警报
- 双倒计时定时器
- 一个定时器事件会在多大程度上减慢我在JavaScript中的代码
- 如何使这个JavaScript定时器正常工作
- 定时器输出保存
- 在两次java定时器循环后重定向访问者
- 如何解决jquery自定义定时器问题
- 如何为PHP/JS游戏制作倒计时/定时器
- vue.js使用定时器自动重新加载/刷新数据
- 如何让javascript定时器在不查看选项卡/窗口时停止
- 如何停止基于jQuery延迟定时器的动画
- J2EE中的倒计时定时器
- JavaScript定时器暂停
- 使用动态参数禁用setInterval函数中的定时器
- 如何重置setInterval定时器?
- javascript setInterval()不触发定时器
- setInterval定时器在ReactJS的render()中不能正常工作
- 如何停止setInterval定时器与Jquery
- 如何清除定时器在setInterval函数与点击触发
- 暂停和播放Jquery定时器使用setInterval