更改setInterval的间隔

时间:2013-02-26 14:02:06

标签: javascript

有没有办法在运行时修改setInterval的函数调用间隔,除了删除它(clearInterval)并再次使用不同的值恢复?

2 个答案:

答案 0 :(得分:14)

使用setTimeout,另外这是async JS的非阻塞方法:

var interval = 1000;

function callback() {
   console.log( 'callback!' );
   interval -= 100; // actually this will kill your browser when goes to 0, but shows the idea
   setTimeout( callback, interval );
}

setTimeout( callback, interval );

不要使用setInterval,因为在某些情况下(大量setInterval +长回调,通常比超时长),由于队列大小有限,一些回调将被删除浏览器和从未执行。只有setTimeout才能保证执行。

答案 1 :(得分:2)

都能跟得上;如果您使用setInterval(),则删除间隔并重新添加它是一种方法。

然而,您可以通过在末尾以可变延迟重复调用setTimeout()来实现不同超时的相同目标。

出于好奇,你想做什么修改间隔?也许requestAnimationFrame()可能更合适?