我有两个与JavaScript setInterval()
方法相关的问题。
我没有发现任何与这些问题相关的实际案例(但我想这也不是不可能),但出于好奇,我想问这些问题。
1。)如果setInterval()
要执行的代码比提供的时间间隔花费的时间更长,会发生什么?先前的执行是否停止,当前的执行是否开始执行,或者两者都将并行运行。
2.。)如果在调用setInterval()
的时间间隔之间挂起整个系统(OS)怎么办?在这种情况下,代码是否可以以不同的间隔执行?我的意思是setInterval()
是否保证代码只能以指定的间隔执行?
感谢
答案 0 :(得分:5)
JavaScript使用单线程执行。诸如setTimeout
和setInterval
之类的函数使许多人相信在JavaScript中可以使用多线程。实际上,setInterval
和setTimeout
仅调度在指定时间执行的函数或表达式,并将这些函数添加到同一单线程堆栈中。如果计划在setTimeout
或setInterval
计划启动时浏览器正在处理其他内容,则只要浏览器可以访问,计划的功能就会立即执行。
setInterval
不保证函数仅以指定的间隔执行。 setInterval
将尝试在指定时间执行函数,但任何数量的事情都可能会延迟执行或阻止它完全执行。
答案 1 :(得分:0)
John Resing引用this article:
如果计时器被阻止立即执行,它将被延迟到下一个可能的执行点(这将超过所需的延迟)。
如果间隔时间足够长(超过指定的延迟),则间隔可以无延迟地执行。