Node.js 通过异步 IO 实现高性能网络应用,核心在于事件循环(Event Loop)非阻塞 I/O机制。以下是关键知识点:


1. 异步 IO 的核心机制

  • 事件循环:Node.js 使用 LibUV 库的事件循环处理回调,避免阻塞主线程
    NodeJS_事件循环
  • 回调函数:每个 IO 操作完成后自动触发回调,如 fs.readFile
  • 流(Stream):通过流处理大文件时,避免一次性加载内存
  • 异步文件系统fs 模块的异步方法(如 readFile)默认非阻塞

2. 异步 IO 实践示例

const fs = require('fs');

// 异步读取文件
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// 使用 Promise 的方式
fs.promises.readFile('example.txt', 'utf8')
  .then(content => console.log(content))
  .catch(err => console.error(err));

3. 异步 IO 的优势

✅ 高并发处理能力
✅ 避免阻塞主线程
✅ 支持回调、Promise、async/await 多种编程范式


4. 扩展学习


📌 小贴士:异步 IO 不等于完全无阻塞,需注意 DNS 解析、TCP 连接等同步操作对性能的影响。