理解nodejs的事件循环

nodejs的一轮事件循环包含六个阶段:

timer:执行所有的setTimeout setInterval回调;

I/O callbacks:执行除了timer的回调和check阶段调用的回调;

idle(空转):node内部执行;

poll:轮询阶段 检索新的I/O事件;

进入到poll阶段以后,
如果没设置timer:
如果poll queue不为空,event loop将同步执行queue里面的回调,直到poll queue为空,
当poll queue为空时:
如果设定了setImmeadiate,poll queue将进入check阶段;
如果没设定setImmeadiate,则会阻塞在poll queue阶段;poll会一直等待新的回调进入,一旦到达
立即执行;

设置了timer:
poll进入空闲阶,event loop 会去检查timer,如果有一个或多个timer到了时间,event loop将会进入下一次循环 按顺序执行timer queue;

check:执行setImmeadiate 回调;

close callback:关闭函数;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值