面试题答案
一键面试异步方式读取文本文件
在Node.js中,可以使用fs.readFile
方法以异步方式读取文件。示例代码如下:
const fs = require('fs');
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
同步方式读取文本文件
使用fs.readFileSync
方法以同步方式读取文件。示例代码如下:
const fs = require('fs');
try {
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}
性能方面的不同
- 异步方式:不会阻塞主线程,当进行文件读取操作时,Node.js可以继续执行后续代码,提高了应用程序的整体性能和响应性。适用于I/O密集型任务,例如大量文件读取、网络请求等场景。
- 同步方式:会阻塞主线程,直到文件读取操作完成。在读取大文件或进行大量同步I/O操作时,会导致主线程长时间无法处理其他任务,降低应用程序的响应速度,适用于文件较小且对顺序执行要求严格的场景。
代码执行流程方面的不同
- 异步方式:调用
fs.readFile
后,代码会继续执行后续语句,而不会等待文件读取操作完成。当文件读取完成后,通过回调函数来处理读取结果。 - 同步方式:调用
fs.readFileSync
后,主线程会暂停执行,等待文件读取操作完成,然后再继续执行后续代码。
适用场景方面的不同
- 异步方式:常用于Web服务器开发、处理大量并发I/O操作的场景,确保服务器在处理I/O时仍能响应其他请求。
- 同步方式:适用于脚本工具、一次性配置文件读取等场景,这些场景对代码的简洁性和顺序性要求较高,且I/O操作相对简单和快速。