在javascript中我们使用像这样的setInterval函数。
myInteval= setInterval("func",t);
如果“func”本身的执行时间大于间隔时间t?
,该怎么办?我认为js是单线程的。这是怎么实现的?
答案 0 :(得分:7)
然后它会等到func
完成执行,检查要在一个时间间隔内运行的函数队列,然后再次运行它。
有关详细信息,请参阅the event loop。
答案 1 :(得分:1)
John Resig撰写的一些重要内容:
http://ejohn.org/blog/how-javascript-timers-work/
...无法保证计时器延迟...
这意味着,您指定的t
不必按原样兑现。它表示最短时间而非保证时间。
再向下:
...间隔不关心当前正在执行的内容,他们会这样做 不加选择地排队,即使它意味着之间的时间 回调将被牺牲......
因此,如果队列由于执行而累积,func
将被排队等待执行,而不会有任何t
延迟。
最后总结:
...如果间隔很长,间隔可以毫无延迟地背靠背执行 足以执行(超过指定的延迟)。