4

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

4

2 回答 2

14

改用 setTimeout,另外这是异步 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保证执行。

于 2013-02-26T14:05:14.203 回答
2

没有; 如果您使用过,删除间隔并重新添加它是一种方法setInterval()

但是,您可以通过setTimeout()在最后以可变延迟重复调用来实现不同超时的相同目标。

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

于 2013-02-26T14:03:43.743 回答