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 怎么在事件循环中安排执行?我可以带你写一个模拟的小例子 ✨

相关推荐
颜酱几秒前
了解 pnpm 的优势,然后将已有项目的 yarn 换成 pnpm
前端·javascript·前端工程化
海在掘金6112716 分钟前
从"鬼知道这对象有啥"到"一目了然" - TS接口的实战魔力
前端
spionbo16 分钟前
Vue 模拟键盘组件封装方法与使用技巧详解
前端
顾青18 分钟前
微信小程序 VisionKit 实战(二):静态图片人脸检测与人像区域提取
前端·微信小程序
hmfy18 分钟前
那些前端老鸟才知道的秘密
前端
野葳蕤19 分钟前
react总览
前端
不一样的少年_22 分钟前
她说想要浪漫,我把浏览器鼠标换成了柴犬,点一下就有烟花(附源码)
前端·javascript·浏览器
顾青22 分钟前
微信小程序实现身份证识别与裁剪(基于 VisionKit)
前端·微信小程序
星链引擎22 分钟前
技术深度聚焦版(侧重技术原理与代码细节)
前端
呵阿咯咯22 分钟前
ueditor富文本编辑器相关问题
前端