node.js 调度 --- 事件循环

Node.js 的事件循环(Event Loop)是什么?为什么这么叫?

"事件循环"是 Node.js 的核心机制之一,它负责调度所有异步任务,让单线程的 JavaScript 实现高并发处理。


🌪️ 为什么叫"事件循环"?

你可以把 Node.js 想象成一个值班机器人,它每天的工作流程如下:

  1. 👀 检查是否有新任务(定时器、网络、文件读取等)
  2. 🧾 把任务排队
  3. 🔁 一轮一轮地调度并执行任务(每一轮称为一个 tick)
  4. 💤 暂时没任务就等待,直到新的事件触发

这种一轮一轮检查并处理事件的机制,就是"事件循环"。


🔄 每一轮事件循环都在处理什么?

Node.js 的事件循环分成几个阶段,每个阶段处理特定的任务队列:

阶段 处理内容
Timers 执行 setTimeout()setInterval() 的回调
Pending Callbacks 某些系统操作(如 TCP 错误)的回调
Poll 轮询 I/O 操作,例如文件读取和数据库查询
Check 执行 setImmediate() 的回调
Close Callbacks 处理关闭事件的回调,例如 socket.on('close')
Microtasks(贯穿各阶段) 执行 Promise、process.nextTick()queueMicrotask() 等任务

👨‍🏫 举个通俗例子

假设你是老师,教室里每天都安排这些事情:

  • 上课(同步任务)
  • 批改作业(微任务)
  • 课后值日生打扫(宏任务)

老师每天都按照这个流程循环进行,Node.js 事件循环就是类似的值班机制,确保每件事都按顺序安排执行。


💡 为什么这机制对开发者重要?

  • 保证异步任务不会阻塞主线程
  • 控制执行顺序(比如微任务优先)
  • 理解后能写出更高效的 Promise/async 代码
  • 处理并发任务更精准

想进一步搞懂 async/await 怎么在事件循环中安排执行?我可以带你写一个模拟的小例子 ✨

相关推荐
kyriewen2 小时前
微软用Go重写TypeScript编译器,速度提升10倍,网友:这是“背叛”还是“救赎”?
前端·typescript·ecmascript 6
Ceelog2 小时前
久坐党自救指南:屏幕前 8 小时,身体到底在经历什么
前端·后端
西陵2 小时前
Agent 为什么会陷入 Doom Loop?OpenClaw 的破解之道
前端·人工智能·ai编程
Hyyy3 小时前
普通前端续命周报——第2周
前端
wuxinyan1233 小时前
工业级大模型学习之路030:Streamlit 企业级智能体前端工作台
前端·学习·streamlit·智能体
修己xj3 小时前
告别无效刷屏!TrendRadar:最快30秒部署的开源热点助手,让你只看真正关心的新闻
前端
anOnion4 小时前
构建无障碍组件之Slider Pattern
前端·html·交互设计
云水一下4 小时前
JavaScript 从零基础到精通系列:前世今生与编程启蒙
前端·javascript
月亮邮递员6164 小时前
Markdown语法总结
开发语言·前端·javascript
Kurisu5754 小时前
雾锁王国修改器下载2026最新
前端·修改器代码