代码之家  ›  专栏  ›  技术社区  ›  Allain Lalonde

setInterval和长时间运行函数

  •  11
  • Allain Lalonde  · 技术社区  · 15 年前

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

    还有一个精彩的跟进,它对普通浏览器的表现是否有所不同?

    1 回复  |  直到 15 年前
        1
  •  18
  •   Community CDub    4 年前

    让我引用一个极好的例子 article

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

    这两段代码可能看起来 看一眼,但它们不是。尤其是 在前一个事件之后至少延迟10毫秒 回调执行(它可能会结束 更多,但从不更少)然而 每10毫秒执行一次回调 他被处决了。

    如果间隔需要足够长的时间来执行(比指定的延迟时间长),则间隔可以背靠背执行而没有延迟。