添加毫秒到超时

时间:2017-09-06 15:42:02

标签: javascript

我在JavaScript中创建了一个如下所示的超时:

var milliseconds = 3000;
var timer = setTimeout(function() { console.log('done!'); }, milliseconds);

此计时器运行3秒钟。但是,有时候,我想再增加一分钟。我的挑战是,有时,计时器已经开始。例如,计时器可能在调用函数之前还剩1分45秒。但是,我想添加一分钟,以便在2分45秒内调用超时功能。

有没有办法在JavaScript中为超时添加毫秒数。我没有看到允许这样做的功能。

1 个答案:

答案 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);

基本上这实现了一个定时器队列。添加一段时间不会更改计时器,但会将时间添加到队列中。如果计时器结束,它只会在没有计时器的情况下执行该功能,如果计时器继续使用它。