Node.js 事件循环:理解异步机制
深入剖析事件循环的各个阶段,掌握异步代码执行顺序。 · 难度:入门 · +15XP
事件循环基础
Node.js 的事件循环是其非阻塞 I/O 模型的核心。它允许 Node.js 在单线程上处理大量并发连接,通过将耗时操作(如文件读取、网络请求)委托给系统内核来实现。
事件循环阶段
- timers:执行 setTimeout、setInterval 回调
- pending callbacks:执行延迟到下一次循环的 I/O 回调
- idle, prepare:内部使用
- poll:获取新的 I/O 事件,执行相关回调
- check:执行 setImmediate 回调
- close callbacks:执行关闭事件回调
代码演示
setTimeout(() => console.log('timeout'), 0);
setImmediate(() => console.log('immediate'));
process.nextTick(() => console.log('nextTick'));
// 输出顺序: nextTick -> timeout -> immediateprocess.nextTick 虽然不属于事件循环的任何阶段,但会在当前阶段结束后立即执行,优先级最高。
练习提示
在下方代码中添加适当的异步函数,观察并验证事件循环的执行顺序。