Node.js 的事件循环(Event Loop)是其核心机制,使得 JavaScript 在非阻塞 I/O 模型下高效处理异步操作。以下是关键知识点:

事件循环的基本概念

事件循环是 Node.js 运行 JavaScript 代码的核心引擎,它通过监听和处理事件来驱动程序执行。

事件循环流程图

关键组成部分

  • 回调队列:存储待执行的回调函数(如 setTimeoutsetInterval
  • 微任务队列:处理 Promiseprocess.nextTick 等高优先级任务
  • 事件循环线程:持续从队列中取出任务执行
回调队列与微任务队列

事件循环的工作流程

  1. 执行同步代码:从上到下运行脚本中的同步操作
  2. 执行微任务:处理 Promiseprocess.nextTick
  3. 执行定时器回调:检查 setTimeoutsetInterval 是否到期
  4. 处理 I/O 事件:完成网络请求、文件读写等操作后触发回调
事件循环阶段划分

常见误区

误区1:事件循环是单线程的,所以无法处理并发
正确:Node.js 通过事件循环+多线程 I/O 驱动实现高并发

误区2:微任务总是在事件循环的末尾执行
正确:微任务在每个事件循环迭代的末尾执行,且优先级高于宏任务

实例分析

// 示例:观察事件循环顺序
setTimeout(() => {
  console.log('定时器回调');
}, 0);

Promise.resolve().then(() => {
  console.log('Promise 回调');
});

// 同步代码
console.log('同步代码执行完毕');
事件循环执行顺序

扩展阅读

若想深入了解异步编程模式,可参考:
/learn/nodejs/async_programming

点击此处查看事件循环的可视化演示