2

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

1.) 如果要执行的代码setInterval()花费的时间超过提供的时间间隔,会发生什么?上一个执行是否停止并且当前执行是否开始执行,或者两者都将并行运行。

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

4

2 回答 2

5
  1. JavaScript 使用单线程执行。setTimeout和之类的函数setInterval使许多人相信 JavaScript 中的多线程是可能的。实际上,setInterval只需setTimeout安排一个函数或表达式在指定时间执行,然后将这些函数添加到同一个单线程堆栈中。setTimeout如果当 a or被调度触发时浏览器正在处理其他事情setInterval,调度的函数将在浏览器可以访问它时立即执行。

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

于 2013-01-11T07:27:48.193 回答
0

引用John Resing 的这篇文章

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

如果间隔需要足够长的时间来执行(比指定的延迟时间长),则间隔可以无延迟地连续执行。

于 2013-01-11T07:28:35.047 回答