在 Poll 阶段调度时,setImmediate 的回调如何在 setTimeout() 之前执行?

编程入门 行业动态 更新时间:2024-10-03 23:21:59

在 Poll 阶段调度时,setImmediate 的<a href=https://www.elefans.com/category/jswz/34/1771351.html style=回调如何在 setTimeout() 之前执行?"/>

在 Poll 阶段调度时,setImmediate 的回调如何在 setTimeout() 之前执行?

这些引用自 Nodejs 文档和博客。

如果立即计时器从正在执行的回调内部排队,则该计时器在下一次事件循环迭代之前不会被触发。

如果在 I/O 周期内调度,setImmediate() 将始终在任何计时器之前执行,与存在多少个计时器无关。

根据 Node 文档,setImmediate() 的回调应该在下一个tick中执行。然而,当它被安排在 I/O(又名 poll 阶段)时,setImmediate 的回调总是在定时器之前触发。

fs.readFile('xx', () => {
  setTimeout(() => { console.log('2 timeout'); }, 0);
  setImmediate(() => { console.log('1 Immediate'); });
});
> 1 Immediate
> 2 timeout

我的问题是它到底是如何工作的? setImmediate() 的回调是否在当前票证而不是下一个报价中执行,因此它会在计时器之前记录?

注意:我已阅读所有建议的现有帖子,但我没有看到任何帖子讨论在 I/O 阶段安排 setImmediate 的特定用例。

回答如下:

setImmediate()
回调在当前事件循环迭代中排队,而 setTimeout() 回调在下一个事件循环迭代中排队。这就是为什么 setImmediate() 回调在 setTimeout() 回调之前执行。

阅读更多详细信息此处。请参阅标题为 setImmediate() 与 setTimeout() 的部分。

更多推荐

在 Poll 阶段调度时,setImmediate 的回调如何在 setTimeout() 之前执行?

本文发布于:2024-05-31 06:10:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1771356.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:回调   阶段   如何在   Poll   setTimeout

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!