欢迎来到程序员中文网!

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

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

时间:2026年08月12日 04:50:02 浏览:0

事件循环概述


Node.js 基于事件驱动,将耗时操作交给底层 libuv 处理,主线程持续轮询。


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

任务优先级



  1. 同步代码(立即执行)

  2. nextTick(微任务,优先级最高)

  3. Promise.then(微任务)

  4. setTimeout/setImmediate(宏任务)


阻塞与并发


const fs = require('fs');

// 阻塞(同步)
const data = fs.readFileSync('/tmp/file', 'utf8');

// 非阻塞(异步)
fs.readFile('/tmp/file', 'utf8', (err, data) => {
if (!err) console.log(data);
});

理解事件循环能帮助写出高性能的 Node.js 应用,避免 CPU 密集型任务阻塞主线程。