例子
const fs = require('fs').promises;
async function getFileContent(filePath) {
const content = await fs.readFile(filePath, 'utf8');
console.log(content); // 这行会在文件读取完成后执行
}
getFileContent('example.txt');
console.log(123); // 这行会立即执行
输出结果:
123
文本内容
关键在于getFileContent是异步函数, await 只是告诉 运行时 在当前异步操作完成之前不要继续执行异步函数内的后续代码,而函数外的同步代码不受影响会继续执行
解析
发散
如果想console.log(123)在文件读取完毕后输出呢?怎么实现?
const fs = require('fs').promises;
async function getFileContent(filePath) {
const content = await fs.readFile(filePath, 'utf8');
console.log(content); // 这行会在文件读取完成后执行
}
async function main() {
await getFileContent('example.txt'); // 使用 await 等待 getFileContent 完成
console.log(123); // 这行会在文件读取完成后执行
}
main();
定义一个main的异步函数,同样,main中的wait会告诉运行时,本异步函数内的后续语句需要在await后的语句执行完后执行。