Node中的事件轮询模型 六个阶段

第一个阶段:timers(定时器阶段 --- setTimeout, setInterval)

  1. 开始计时

  2. 执行定时器

第二个阶段:pending callbacks(系统阶段)

第三个阶段:idle,prepare (准备阶段)

第四个阶段:poll (轮询阶段,核心)

  ---如果回调队列里有待执行的回调函数

    从回调队列中取出回调函数,同步执行(一个一个执行),直到回调队列为空了,或者达到系统最大线限度

  ---如果回调队列为空

    ---如果有设置过 setImmediate

      进入下一个 check

      目的: 为了执行 setImmdiate 所设置的回调

    ---如果未设置过 setImmdiate

      在此阶段停留,等待回调函数被插入回调队列

      如果定时器时间到了,也会进入下一个 check 阶段

      原因:这是一个循环只能往下一阶段走,所以要进入第五阶段 在走第六阶段 最后第一阶段(最终目的)

第五个阶段:check (专门用于执行 setImmdiate 所设置的回调)

第六个阶段:close callbacks (关闭 setImmdiate  定时器阶段)

 

process.nextTick () --- 用于设置立即执行函数(“VIP” ---- 能在任意阶段优先执行的)

posted @ 2022-06-28 20:10  生活在北极的企鹅  阅读(77)  评论(0编辑  收藏  举报