欢迎来到程序员中文网!

首页 Linux Mysql C++ Python PHP JavaScript 资源下载 动态 开源推荐
我要投稿 投诉建议

Node.js 事件循环与异步非阻塞 IO

时间:2026年08月12日 05:39:03 浏览:1

Node.js 事件循环与异步非阻塞 IO


Node.js 基于事件循环实现高并发,理解其机制可避免性能陷阱。


1. 事件循环阶段



  • 定时器(setTimeout/setInterval)

  • I/O 回调

  • idle, prepare

  • poll(获取新 I/O 事件)

  • check(setImmediate)

  • close callbacks


2. 微任务与宏任务


console.log('1');
setTimeout(() => console.log('2'), 0);
process.nextTick(() => console.log('3'));
Promise.resolve().then(() => console.log('4'));
console.log('5');
// 输出:1,5,3,4,2

3. 阻塞 CPU 密集型任务



  • 使用 worker_threads 或子进程。

  • 避免在主线程中同步计算。


4. 异步 IO 示例


const fs = require('fs');
fs.readFile('file.txt', 'utf8', (err, data) => {
if (!err) console.log(data);
});

理解事件循环可写出更高效的 Node.js 应用。