【Node.js】事件循环
Node.js 的事件循环是单线程的,但通过使用回调、事件监听器和异步I/O操作,它能够在单个线程中并发地处理大量的并发操作。
Node.js 的事件循环可以概括为以下几个阶段:
- 执行全局代码
- 执行微任务(例如:Promise 的回调)
- 执行事件监听器
- 执行 setImmediate 的回调
- 执行 close 回调(例如:socket.on('close', ...))
以下是一个简单的例子,展示了如何在 Node.js 中使用事件循环处理异步操作:
// 异步操作:文件系统读取
const fs = require('fs');
console.log('开始');
// 异步读取文件
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data); // 这里的代码会在事件循环的下一个迭代中执行
});
console.log('结束');
// 执行结果会先打印:开始、结束,然后才会打印出 example.txt 的内容。
// 这是因为 fs.readFile 是异步的,它不会阻塞代码执行,而是在事件循环中注册一个事件监听器,
// 当文件读取完成后,该监听器会被触发并执行回调中的代码。
在这个例子中,fs.readFile
是一个异步函数,它会在后台读取文件,并在读取完成后触发一个事件,然后执行传递给它的回调函数。这样的设计使得 Node.js 能够处理大量的并发操作,而不会阻塞单个线程。
评论已关闭