我在JavaScript中创建了一个如下所示的超时:
var milliseconds = 3000;
var timer = setTimeout(function() { console.log('done!'); }, milliseconds);
此计时器运行3秒钟。但是,有时候,我想再增加一分钟。我的挑战是,有时,计时器已经开始。例如,计时器可能在调用函数之前还剩1分45秒。但是,我想添加一分钟,以便在2分45秒内调用超时功能。
有没有办法在JavaScript中为超时添加毫秒数。我没有看到允许这样做的功能。
答案 0 :(得分:3)
class Timer {
constructor(func){
this.func = func;
this.timers = [];
}
start(time){
setTimeout(_=>this.check(),time);
}
add(time){
this.timers.push(time);
}
check(){
if(!this.timers.length) return this.func();
this.start(this.timers.shift());
}
}
可以这样:
var t = new Timer(_=>alert("hi"));
t.start(1000);
t.add(3000);
基本上这实现了一个定时器队列。添加一段时间不会更改计时器,但会将时间添加到队列中。如果计时器结束,它只会在没有计时器的情况下执行该功能,如果计时器继续使用它。