在我的实现中,方法每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);
}
答案 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);
}