除了使用clearInterval清除定时器并重新设置不同的值之外,在运行时是否有一种修改使用setInterval函数设置的调用间隔的方法?
除了使用clearInterval清除定时器并重新设置不同的值之外,在运行时是否有一种修改使用setInterval函数设置的调用间隔的方法?
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
可以保证执行。
如果你使用了setInterval()
,那么删除间隔再重新添加是解决问题的方法。
然而,你也可以通过在最后使用可变延迟反复调用setTimeout()
来实现相同的目标。
出于好奇,你想修改间隔做什么?也许使用requestAnimationFrame()
更加合适?