来自文档
阶段概述
在事件循环的每次运行之间,Node.js检查它是否在等待任何异步I/O或计时器,如果没有任何异步I/O或定时器,则彻底关闭。
我听不懂第四颗子弹。特别是“节点在适当的时候会阻塞这里”这一行。。
在什么情况下,Node会阻止自己,为什么呢?
发布于 2019-03-08 10:21:30
正如在这个部分中所解释的,轮询阶段计算它将阻塞和等待I/O的时间,因此在这个阶段中,如果计时器阶段计算的时间阈值被跨越,它会执行来自计时器的回调。
如果没有跨越计时器阈值,并且轮询队列不是空的,则事件循环将遍历其回调队列,同步执行它们,直到队列耗尽或达到与系统相关的硬限制为止。
如果轮询队列为空,则还会发生以下两种情况之一:
1-如果setImmediate()已对脚本进行了调度,则事件循环将结束轮询阶段并继续到检查阶段以执行这些预定脚本。
2-如果setImmediate()没有调度脚本,则事件循环将等待回调添加到队列中,然后立即执行.
https://stackoverflow.com/questions/55060510
复制相似问题