首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >setInterval和setTimeout是如何工作的?

setInterval和setTimeout是如何工作的?
EN

Stack Overflow用户
提问于 2014-02-26 19:24:40
回答 5查看 31.4K关注 0票数 37

I 当时处境很尴尬,

我在纯JavaScript上工作了近3年,我知道JavaScript是单线程语言,您可以使用setIntervalsetTimeout函数模拟异步执行,

但是当我想到他们怎么工作的时候,我就不明白了。那么这些函数是如何影响执行上下文的呢?

我想,在特定的时间里,代码只运行一部分,然后切换到另一部分。如果是这样,那么许多setIntervalsetTimeout调用会影响性能吗?

EN

Stack Overflow用户

发布于 2018-05-09 06:54:37

JavaScript是一种单线程脚本语言,因此它可以一次执行一段代码(由于它的单线程性质),每个代码块都“阻塞”其他异步事件的进程。这意味着当异步事件发生时(如鼠标单击、计时器触发或XMLHttpRequest完成),将排队等待稍后执行。

setTimeout() 当您使用setTimeout()时,它只有在队列中轮到它时才会执行,如果由于某种原因导致的早期事件( setTimeout)阻塞,setTimeout会比setTimeout()函数中指定的时间延迟。在执行setTimeout回调函数期间,如果发生任何事件(例如单击事件),则会排队等待稍后执行。

代码语言:javascript
运行
复制
setTimeout(function(){
  /* Some long block of code... */
  setTimeout(arguments.callee, 10);
}, 10);

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

setInterval()

  • 类似于setTimeout,但不断调用该函数(每次都会延迟),直到它被取消为止。
  • 事件之后,setTimeout代码总是至少有10 at的延迟。 以前的回调执行(可能会更多,但不会减少),而setInterval将尝试每10 of执行一次回调,而不管最后一次回调是什么时候执行的。
  • 如果计时器被阻塞,不能立即执行,它将被延迟。 直到下一个可能的执行点(这将比期望的延迟更长)。如果执行时间足够长(超过指定的时间),则间隔可以不延迟地背靠背执行。 延迟)。
票数 2
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22051209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档