node 事件循环的各个阶段
图片截取自https://nodejs.org/en/docs/gu...
timers
执行setTimeout setInterval的回调函数pending callbacks
执行延迟到下一个循环的I/O回调idle, prepare
内部调用poll
轮询新的I/O事件;执行I/O相关的回调(除seTimeout setInterval setImmediate 及连接关闭的回调如socket.on('close'),()=>{}),node在这个阶段会阻塞check
检查阶段,执行setImmediate的回调close callbacks
执行连接关闭的回调如socket.on('close',()=.{})
我的问题是:
- pending callbacks阶段执行的回调 和 poll 阶段执行的回调有什么不一样吗?
- 有很多文章是这样写的他们的叙述是否和官方的有出入
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
阶段流程概述
在每次运行的事件循环之间,Node.js 检查它是否在等待任何异步 I/O 或计时器,如果没有的话,则关闭干净。
pending callbacks
此阶段对某些系统操作(如 TCP 错误类型)执行回调。例如,如果 TCP 套接字在尝试连接时接收到 ECONNREFUSED,则某些 *nix 的系统希望等待报告错误。这将被排队以在 pending callbacks 阶段执行。
poll
轮询 阶段有两个重要的功能:
当事件循环进入 poll阶段且 timers scheduled,将发生以下两种情况之一:
If the poll queue is empty,还有两件事发生
一旦 poll queue 为空,事件循环将检查 已达到时间阈值的timer计时器_。如果一个或多个计时器已准备就绪,则事件循环将回到 _timer 阶段以执行这些计时器的回调。
更多描述,看原文章:NodeJs 的 Event loop 事件循环机制详解