浅谈js事件循环机制与Node的事件循环机制

宏任务:setTimeout,setInterval,

微任务:promise的回调

js的事件循环机制比较简单

先执行主线程代码,执行完毕后,清空微任务队列,然后取出一个宏任务,然后清空微任务队列,如此循环

Node的事件循环比较复杂 

Node的事件循环分为六个阶段

(1)timers计时器  执行setTimeoutsetInterval的回调函数

(2)I/0 callbacks  执行I/O callback被延迟到下一阶段执行;

(3)idle, prepare   队列的移动,仅内部使用

(4)poll 轮询阶段 这个阶段是用来执行和 IO 操作有关的回调的,Node会向操作系统询问是否有新的 IO 事件已经触发,然后会执行响应的事件回调。几乎所有除了 定时器事件、 setImmediate() 和 close callbacks 之外操作都会在这个阶段执行。

(5)check 这个阶段会执行 setImmediate() 设置的任务

(6)close  执行close事件的callback,例如socket.on("close",func) 如果一个 socket 或 handle(句柄) 突然被关闭了,例如通过 socket.destroy() 关闭了,close事件将会在这个阶段发出。

参考:https://juejin.im/post/5b5f365e6fb9a04fa8673f97

https://juejin.im/post/5b50af02e51d45190f4ab64b

https://cnodejs.org/topic/5a9108d78d6e16e56bb80882

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值