Node.js 事件循环的工作流程

Node.js 的事件循环由六个主要阶段组成,每个阶段都有一个或多个回调队列。事件循环依次遍历这些阶段,并在每个阶段执行相应的回调函数。具体的流程如下:

  1. Timers(计时器阶段):

    • 执行已到期的 setTimeout 和 setInterval 回调。这里的计时器并不保证会在精确的时间执行,只会在接近的时间执行。
  2. I/O Callbacks(I/O 回调阶段):

    • 执行几乎所有的回调(除了关闭的回调函数、计时器的回调函数和 setImmediate 的回调函数)。这包括一些操作系统层面的回调,如网络通信的回调。
  3. Idle, Prepare(空闲,准备阶段):

    • 仅在内部使用。一般不涉及开发者的代码。用于 node.js 内部调用。
  4. Poll(轮询阶段):

    • 计算轮询的超时时间。

    • 处理轮询队列中的事件。

    • 检索新的 I/O 事件,执行 I/O 回调(几乎所有的 I/O 都在这里进行),在适当的时候回阻塞在这里。轮询阶段有两个主要功能:
  5. Check(检查阶段):

    • 执行 setImmediate 回调函数。setImmediate 与 setTimeout 的区别在于,setImmediate 设计为在当前轮询阶段结束后立即执行,而 setTimeout 则需要等到下一个计时器阶段。
  6. Close Callbacks(关闭回调阶段):

    • 执行一些关闭回调函数,如 socket.on('close', ...)。
相关推荐
liangshanbo12151 天前
面试题:如何优化 Webpack 的打包速度?
前端·webpack·node.js
2601_962177301 天前
Windows 安装 Codex CLI 入门级教程
人工智能·windows·node.js·ai编程
光影少年1 天前
RN与Flutter架构区别
前端·flutter·react native·react.js·架构·node.js
梅孔立2 天前
Codex 完整教程(Node.js安装 + npm安装Codex + DeepSeek配置 + 快捷键 + 设置)
前端·npm·node.js
晚风醉蝶2 天前
webpack 模块提取
前端·webpack·node.js·ast·逆向分析
YIAN3 天前
从 SSE 流式到结构化输出:LangChain 三大 OutputParser 与 ToolCall 方案全实战
前端·langchain·node.js
濮水大叔4 天前
Cabloy全栈框架的两个SSR入口:Vona集成式SSR vs Zova独立式SSR
typescript·node.js·全栈
怕浪猫4 天前
DeepSeek Harness 系列图解
面试·前端框架·node.js
百万蹄蹄向前冲4 天前
双端同步!云服务器装最新Node.js v26.10全过程追踪
服务器·人工智能·node.js
前端snow4 天前
ai agent--- 后端概念补充:Docker Compose、ElasticSearch、IK、BM25等
node.js