面试题答案
一键面试回调函数实现异步操作原理
在Node.js中,JavaScript是单线程运行的。当执行到一个异步操作(如文件读取、网络请求等)时,Node.js不会阻塞主线程等待操作完成,而是将这个异步任务交给内部的线程池(对于I/O操作等)或者事件循环机制来处理。主线程继续执行后续代码。当异步操作完成后,会将其结果放入事件队列。事件循环不断检查事件队列,当发现有任务完成的事件时,就会将对应的回调函数放入调用栈中执行,从而实现异步操作的回调处理,避免阻塞主线程。
简单文件读取异步操作使用回调函数代码示例
const fs = require('fs');
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error('读取文件出错:', err);
return;
}
console.log('文件内容:', data);
});
在上述代码中,fs.readFile
是一个异步操作,它接受文件名、编码格式以及一个回调函数作为参数。在执行fs.readFile
时,主线程不会等待文件读取完成,而是继续执行后续代码。当文件读取完成后,无论成功还是失败,都会调用回调函数,在回调函数中处理读取结果或错误信息。