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', ...)
相关推荐
星栈16 小时前
我以为 TS7.0 只是换个版本号,结果编译快了 9 倍,也踩了 5 个坑
后端·typescript·node.js
Synmbrf16 小时前
Mosquitto 持久化消息积压导致网关内存耗尽的排查
node.js
AINative软件工程18 小时前
LLM Streaming 背压工程实践:慢客户端、断流重连与服务端缓冲区的生产设计
node.js·llm
码林鼠1 天前
webpack的基本配置
前端·webpack·node.js
FeelTouch Labs1 天前
Node.js 中的 spawn 和 exec:子进程执行的不同方式对比
node.js·编辑器·vue·vim
烂蜻蜓1 天前
Node.js入门教程(一):初识Node.js——服务端JavaScript的诞生与特点
开发语言·javascript·node.js
凌云拓界2 天前
NodeVerdict:Node.js 原生诊断数据可视化工具
信息可视化·架构·typescript·开源·node.js·github·bug
用户2930750976692 天前
React Router v6 实战:理解 SPA 路由系统
node.js
星蓝_starblue2 天前
零服务器、零数据库!开源growth-board,利用GitHub自动管理刷题/学习/求职全流程
服务器·数据库·程序人生·系统架构·node.js·github·改行学it