увеличивать таймер setInterval при каждом выполнении - PullRequest
0 голосов
/ 13 мая 2018

В моей реализации метод выполняется каждые 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 голосов
/ 13 мая 2018

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);
}
0 голосов
/ 13 мая 2018

Вы не можете просто установить 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);
...