每次执行时都会递增setInterval计时器

时间:2018-05-13 18:07:47

标签: javascript setinterval

在我的实现中,方法每5秒执行一次。但我想增加系列的时间间隔。首先在第5秒运行,第二次运行在第15秒,第三次运行在第30秒。以下代码仍然每5秒执行一次。有人可以帮助解决问题

    var timer = 5000;
   var win = setInterval( callback,timer);
        function callback () {
                    timesRun += 1;

                    if (totalResultUpdated > totalResultInitial)
                    {
                        clearInterval(win);
                          timer*=2;
                        fun(false);
                    } 
                              win=setInterval(callback,timer);
                        }

2 个答案:

答案 0 :(得分:2)

您不能只将timer设置为其他值。间隔开始后,它将继续设置为最初的时间。而不是开始一个间隔,我建议使用伪转发超时:

 function increasingInterval(fn, time) {
   function next(i) {
     fn();
     setTimeout(next, time * i, i + 1);
   }
   setTimeout(next, time, 2);
 }

所以你可以这样做:

 increasingInterval(function() {
   console.log("something");
 }, 5000);

答案 1 :(得分:1)

let timeout = 5000;

let intervalId = setInterval(callback, timeout);
function callback () {
  console.log('Do something here', new Date());
  clearInterval(intervalId);
  timeout *= 2;
  intervalId = setInterval(callback, timeout);
}