setInterval和长时间运行的函数

时间:2009-12-29 19:24:38

标签: javascript setinterval

setInterval如何处理花费超过所需间隔的回调函数?

我已经读过回调可能会收到迟到的毫秒数作为它的第一个参数,但是我无法找到它为什么会迟到(抖动或长时间运行的函数)。

对于精彩的跟进,对于常见的浏览器,它的表现是否有所不同?

1 个答案:

答案 0 :(得分:15)

让我引用John Resig关于计时器的优秀article

setTimeout(function(){
  /* Some long block of code... */
  setTimeout(arguments.callee, 10);
}, 10);

setInterval(function(){
  /* Some long block of code... */
}, 10);
  

这两段代码可能会出现   起初功能相同   一瞥,但他们不是。值得注意的是   setTimeout代码将始终为   在前一次之后至少延迟10ms   回调执行(可能会结束   更多,但永远不会更少)而   setInterval将尝试   每10ms执行一次回调   无论何时最后一次回调   被执行了。

     

如果间隔时间足够长(超过指定的延迟),则间隔可以无延迟地执行。