Node.js 的事件循环(Event Loop)是其核心机制,使得 JavaScript 在非阻塞 I/O 模型下高效处理异步操作。以下是关键知识点:
事件循环的基本概念
事件循环是 Node.js 运行 JavaScript 代码的核心引擎,它通过监听和处理事件来驱动程序执行。
关键组成部分
- 回调队列:存储待执行的回调函数(如
setTimeout
、setInterval
) - 微任务队列:处理
Promise
、process.nextTick
等高优先级任务 - 事件循环线程:持续从队列中取出任务执行
事件循环的工作流程
- 执行同步代码:从上到下运行脚本中的同步操作
- 执行微任务:处理
Promise
和process.nextTick
- 执行定时器回调:检查
setTimeout
和setInterval
是否到期 - 处理 I/O 事件:完成网络请求、文件读写等操作后触发回调
常见误区
❌ 误区1:事件循环是单线程的,所以无法处理并发
✅ 正确:Node.js 通过事件循环+多线程 I/O 驱动实现高并发
❌ 误区2:微任务总是在事件循环的末尾执行
✅ 正确:微任务在每个事件循环迭代的末尾执行,且优先级高于宏任务
实例分析
// 示例:观察事件循环顺序
setTimeout(() => {
console.log('定时器回调');
}, 0);
Promise.resolve().then(() => {
console.log('Promise 回调');
});
// 同步代码
console.log('同步代码执行完毕');
扩展阅读
若想深入了解异步编程模式,可参考:
/learn/nodejs/async_programming