来自docs:
阶段概述
在事件循环的每次运行之间,Node.js检查它是否在等待 用于任何异步I / O或计时器,如果有的话,可以干净地关闭 没有。
我听不懂第四个子弹。特别是“ 节点行将在适当的时候在此处阻塞。”
在哪种情况下,节点会自身阻塞,为什么?
答案 0 :(得分:0)
如本section中所述,轮询阶段将计算阻塞并等待I / O多长时间。 因此,在此阶段,如果超过了在计时器阶段计算的时间阈值,它将从计时器执行回调。
如果未超过计时器阈值并且轮询队列不为空,则事件循环将迭代通过其同步执行回调的回调队列,直到该队列用尽或达到与系统相关的硬限制为止。 / p>
如果轮询队列为空,则会发生以下两种情况之一:
1-如果脚本已由setImmediate()安排,则事件循环将结束轮询阶段,并继续执行检查阶段以执行那些计划的脚本。
2-如果setImmediate()尚未安排脚本,则事件循环将等待回调添加到队列中,然后立即执行它们。