javascript的setInterval函数

时间:2014-05-09 13:15:14

标签: javascript html

在javascript中我们使用像这样的setInterval函数。

myInteval= setInterval("func",t);

如果“func”本身的执行时间大于间隔时间t?

,该怎么办?

我认为js是单线程的。这是怎么实现的?

2 个答案:

答案 0 :(得分:7)

然后它会等到func完成执行,检查要在一个时间间隔内运行的函数队列,然后再次运行它。

有关详细信息,请参阅the event loop

答案 1 :(得分:1)

John Resig撰写的一些重要内容:

http://ejohn.org/blog/how-javascript-timers-work/

  

...无法保证计时器延迟...

这意味着,您指定的t不必按原样兑现。它表示最短时间而非保证时间。

再向下:

  

...间隔不关心当前正在执行的内容,他们会这样做   不加选择地排队,即使它意味着之间的时间   回调将被牺牲......

因此,如果队列由于执行而累积,func将被排队等待执行,而不会有任何t延迟。

最后总结:

  

...如果间隔很长,间隔可以毫无延迟地背靠背执行   足以执行(超过指定的延迟)。