有没有办法在运行时修改setInterval的函数调用间隔,除了删除它(clearInterval)并再次使用不同的值恢复?
答案 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()
可能更合适?