The Node.js Event Loop, Timers, and process.nextTick()

2 篇文章 0 订阅
2 篇文章 0 订阅

理解了Node.js Event Loop中的每个  Phases 会执行的 operations 就知道为什么 使用定时器如setTimeout()

设定在 5ms后执行回调函数,但在第3ms时有一个 process.nextTick() 回调函数执行了4ms,则setTimeout()的回调

实际被执行的时间是第7ms。


note: each box will be referred to as a "phase" of the event loop.

What is the Event Loop?

The event loop is what allows Node.js to perform non-blocking I/Ooperations — despite the fact that JavaScript issingle-threaded — by offloading operations to the system kernel whenever possible.

Since most modern kernels are multi-threaded, they can handle multipleoperations executing in the background. When one of these operationscompletes, the kernel tells Node.js so that the appropriate callbackmay be added to the poll queue to eventually be executed. We'll explainthis in further detail later in this topic.


Phases Overview

  • timers: this phase executes callbacks scheduled by setTimeout() and setInterval().
  • I/O callbacks: executes almost all callbacks with the exception of close callbacks, the ones scheduled by timers, and setImmediate().
  • idle, prepare: only used internally.
  • poll: retrieve new I/O events; node will block here when appropriate.
  • checksetImmediate() callbacks are invoked here.
  • close callbacks: e.g. socket.on('close', ...).

Between each run of the event loop, Node.js checks if it is waiting for any asynchronous I/O or timers and shuts down cleanly if there are not any.


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值