Node 事件循环机制

前言

JS事件循环机制参照我上一篇JS Event Loop事件循环机制,本文将会讲述 Node 的事件循环机制,便于理解与浏览器的 Event Loop 的差异。

Node 事件循环机制

在这里插入图片描述

上图各个阶段说明:

  • timers(定时器检测阶段):执行 timer 的回调,即 setTimeout、setInterval 里面的回调函数。
  • pending callbacks(I/O事件回调阶段):处理上一轮循环中没有执行的 I/O 回调。
  • idle,prepare(闲置阶段):仅 node 内部使用。
  • poll(轮询阶段):检查新的 I/O 事件,执行相关回调,适当条件下 Node将阻塞在此。
  • check(检查阶段):执行 setImmediate() 回调函数。
  • close callback(关闭事件回调阶段):一些关闭的回调函数。如 socket.on()。

poll 执行流程

如果存在定时器,且定时器时间到了,eventloop 回到 timers 阶段。
如果没有定时器,检查 poll 的回调函数队列:不为空,则遍历执行直到队列为空或者达到系统显示。为空,则检查是否有 setImmediate 回调,有则进入 check 阶段执行回调,没有则等待回调加入队列立即执行。超时自动进入 check 阶段。
timers 阶段不管有几个 setTimeout、setInterval 都会执行。

node 与浏览器 eventloop 的差异

浏览器中微任务的队列是每个宏任务执行完之后执行。
node 中的微任务会在事件循环的各个阶段之间执行,也就是一个阶段执行完毕就会去执行微任务队列里面的任务。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值