Nodejs中的事件循环

nodejs 的执行场景和js的执行场景是不同的,nodejs 是在服务端运行的,而 js 是在浏览器中运行的。所以他们的事件循环也是不同的。

各个阶段

  1. timers 定时器阶段
    • 执行 setTimeout 和 setInterval 中的回调函数。如果有到期的定时器,他们的回调函数会在这个阶段执行
  2. pending callbacks 阶段
    • 处理一些系统操作的回调函数,比如监听端口操作的回调函数
  3. idle, prepare 阶段
    • 内部使用,事件循环的一个内部状态,不对用户公开
  4. I/O poll 轮询阶段
    • 文件读取操作的回调函数
    • 如果 Poll 队列为空,事件循环会检查是否有定时器到期,如果有,则跳转到 timers 阶段
  5. check 检查阶段
    • 执行 setImmediate 中的回调函数
  6. close 关闭阶段
    • 处理一些关闭中的事件,如关闭文件描述符、关闭网络连接等

特殊阶段

process.nextTick

每个阶段结束后,事件循环会检查是否有 process.nextTick 中的回调函数。如果有,会将这些回调函数添加到下一个事件循环的宏任务队列中


Nodejs中的事件循环
https://zouhualu.github.io/20210920/Nodejs中的事件循环/
作者
花鹿
发布于
2021年9月20日
许可协议