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

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

  1. Timers(计时器阶段)

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

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

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

    • 计算轮询的超时时间。

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

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

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

    • 执行一些关闭回调函数,如 socket.on('close', ...)
相关推荐
百万运营Pro2 小时前
用 Astro + Supabase 从零构建全网盘聚合搜索引擎:PGroonga 中文检索实战
搜索引擎·前端框架·node.js·个人开发·学习方法·ai编程·资源分享
小婉18 小时前
我用 Next.js + React Flow 从零搭建了一个可视化 AI 工作流编排平台
前端·人工智能·node.js
抓不住时间的沙1 天前
N1搭建守护环境以及重装 Armbian 后完整恢复整套守护环境,清理日志步骤
node.js
meilindehuzi_a1 天前
从域名到数据库:React + Node.js 项目部署全流程与用户访问链路
数据库·react.js·node.js
李游Leo1 天前
Node.js 开发环境安装与 npm/pnpm 国内镜像配置(Windows / macOS / Linux)
npm·node.js·pnpm·前端开发·开发环境
阿黎梨梨2 天前
AI也有记忆?LangChain Memory 管理指南
langchain·node.js·llm
小小龙学IT2 天前
libuv 开源异步 I/O 事件循环库深度解析:Node.js 的心脏,C++ 高性能网络程序的引擎
c++·开源·node.js
用户672465366053 天前
Node 守护进程日志转发踩坑记:stdio 管道、UTF-8 截断,和一个字符串按值传参的故事
node.js
coderCN3 天前
Nodejs express+knex(ORM框架)
前端·node.js
coderCN3 天前
Nodejs mysql2+express+yaml
node.js