setInterval and long running functions

这一生的挚爱 提交于 2019-12-21 07:18:12

问题


How does setInterval handle callback functions that take longer than the desired interval?

I've read that the callback may receive the number of milliseconds late as its first argument, but I was unable to find why it would be late (jitter, or long running functions).

And the wonderful follow up, does it behave differently for the common browsers?


回答1:


Let me quote an excellent article about timers by John Resig:

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

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

These two pieces of code may appear to be functionally equivalent, at first glance, but they are not. Notably the setTimeout code will always have at least a 10ms delay after the previous callback execution (it may end up being more, but never less) whereas the setInterval will attempt to execute a callback every 10ms regardless of when the last callback was executed.

Intervals may execute back-to-back with no delay if they take long enough to execute (longer than the specified delay).



来源:https://stackoverflow.com/questions/1976405/setinterval-and-long-running-functions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!