与JavaScript setInterval相关的问题

时间:2013-01-11 07:21:27

标签: javascript setinterval

我有两个与JavaScript setInterval()方法相关的问题。 我没有发现任何与这些问题相关的实际案例(但我想这也不是不可能),但出于好奇,我想问这些问题。

1。)如果setInterval()要执行的代码比提供的时间间隔花费的时间更长,会发生什么?先前的执行是否停止,当前的执行是否开始执行,或者两者都将并行运行。

2.。)如果在调用setInterval()的时间间隔之间挂起整个系统(OS)怎么办?在这种情况下,代码是否可以以不同的间隔执行?我的意思是setInterval()是否保证代码只能以指定的间隔执行? 感谢

2 个答案:

答案 0 :(得分:5)

  1. JavaScript使用单线程执行。诸如setTimeoutsetInterval之类的函数使许多人相信在JavaScript中可以使用多线程。实际上,setIntervalsetTimeout仅调度在指定时间执行的函数或表达式,并将这些函数添加到同一单线程堆栈中。如果计划在setTimeoutsetInterval计划启动时浏览器正在处理其他内容,则只要浏览器可以访问,计划的功能就会立即执行。

  2. setInterval不保证函数仅以指定的间隔执行。 setInterval将尝试在指定时间执行函数,但任何数量的事情都可能会延迟执行或阻止它完全执行。

答案 1 :(得分:0)

John Resing引用this article

  

如果计时器被阻止立即执行,它将被延迟到下一个可能的执行点(这将超过所需的延迟)。

     

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