【发布时间】:2013-02-12 00:26:49
【问题描述】:
有没有办法在运行时修改 setInterval 函数的调用间隔,而不是删除它 (clearInterval) 并使用不同的值再次恢复?
【问题讨论】:
标签: javascript
有没有办法在运行时修改 setInterval 函数的调用间隔,而不是删除它 (clearInterval) 并使用不同的值再次恢复?
【问题讨论】:
标签: javascript
使用 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 保证执行。
【讨论】:
不;如果您使用过setInterval(),则删除间隔并重新添加它是一种方法。
但是,您可以通过反复调用 setTimeout() 并在最后使用可变延迟来实现相同的超时目标。
出于好奇,你想修改间隔是做什么的?也许requestAnimationFrame() 可能更合适?
【讨论】: