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', ...)
相关推荐
星栈2 小时前
Node 框架怎么选?Express、Koa、Egg、NestJS 场景化选型指南
后端·node.js
万敏3 小时前
Vue3 全栈实战第三周:组件化开发完整记录 —— Props / Emit / provide-inject / 插槽 / 自定义指令
vue.js·node.js·全栈
Kel7 小时前
Node.js 单线程高并发:从内核中断到 JS 回调的完整技术栈
设计模式·架构·node.js
触底反弹1 天前
🔥 保姆级教程|SSE + BFF + 跨域三件套,从零实现 ChatGPT 流式输出(附完整代码)
人工智能·node.js·vite
柒和远方2 天前
V043:BFF 层流式输出:从前端直连到生产级流式网关的架构演进
javascript·架构·node.js
濮水大叔2 天前
在 DTO 中使用 Form Layout 配置复杂表单,支持 Tabs/Groups/Sections
vue.js·typescript·node.js
Starry-sky(jing)2 天前
如何判断 Windows 是否安装 Node.js:三种方法 + 常见漏判场景
运维·windows·node.js·环境检测
zzx2006__3 天前
Ajax➕node.js➕webpack
ajax·webpack·node.js
码农学院3 天前
基于小程序云开发与Node.js的餐饮行业AI优化方案:智能推荐与订单预测实战
人工智能·小程序·node.js
触底反弹3 天前
🔥 前端也能玩转 AI 流式输出!从二进制流到打字机效果,一篇讲透
javascript·人工智能·node.js