setInterval如何处理花费超过所需间隔的回调函数?
我已经读过回调可能会收到迟到的毫秒数作为它的第一个参数,但我无法找到为什么它会迟到(抖动或长时间运行的函数)。
对于常见的浏览器,它的表现有多么不同?
setInterval如何处理花费超过所需间隔的回调函数?
我已经读过回调可能会收到迟到的毫秒数作为它的第一个参数,但我无法找到为什么它会迟到(抖动或长时间运行的函数)。
对于常见的浏览器,它的表现有多么不同?
让我引用一个优秀的 文章 关于John Resig的计时器:
setTimeout(function(){
/* Some long block of code... */
setTimeout(arguments.callee, 10);
}, 10);
setInterval(function(){
/* Some long block of code... */
}, 10);
这两段代码可能会出现 起初功能相同 一瞥,但他们不是。值得注意的是 setTimeout代码将始终为 在上一次之后至少延迟10ms 回调执行(它可能会结束 更多,但从不少)而 setInterval将尝试 每10ms执行一次回调 无论何时最后一次回调 被执行了。
如果间隔执行时间足够长(超过指定的延迟),则间隔可以无延迟地执行。