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', ...)
相关推荐
知识浅谈8 小时前
OpenClaw保姆级安装教程:基于ubuntu系统
linux·ubuntu·node.js
月弦笙音8 小时前
【Node】操作磁盘文件底层原理:从「点外卖」到「厨房流水线」
node.js
真夜11 小时前
从Go工具到Vite插件:参考esbuild案例打造前端自动化部署神器
前端框架·node.js·go
泉城嵌入式11 小时前
从嵌入式开发工程师角度了解前端开发与后端开发
node.js
AIFarmer12 小时前
npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确, 然后再试一次。
前端·npm·node.js
网络点点滴15 小时前
Node.js路由知识
node.js
KevinCyao15 小时前
node.js彩信接口如何集成?使用Node.js异步流模式发送多图片彩信
node.js
__zRainy__15 小时前
patch-package 打补丁方案详解
npm·node.js
hashiqimiya16 小时前
npm查看依赖
前端·npm·node.js
San3016 小时前
从浏览器到 Node.js,这一次彻底搞懂 Event Loop 与异步模型
面试·node.js·浏览器