两次独立读取
本课属于 Coddy Node.js 学习旅程的“Node.js 基础”单元。第 24 课,共 33 课。
当两个读取操作都不需要对方的结果时,它们可以同时开始。Promise.all 接收它们的 Promise,并返回一个包含结果数组的 Promise。只需等待这个数组一次。
const [name, city] = await Promise.all([
readFile('name.txt', 'utf8'),
readFile('city.txt', 'utf8'),
]);第一个结果对应第一个 Promise,即使第二次读取先完成也是如此。方括号会将两个结果分别赋给不同的变量。如果任意一次读取失败,组合后的 Promise 就会被拒绝。如果某个操作需要先前操作的结果,就分别使用 await。
提供的练习读取器会拒绝在另一次读取开始之前就等待读取结果的操作。这样可以让过早等待的情况显现出来,但它不会测量执行速度。
挑战
简单这是一个小型练习项目。项目设置已提供,只编辑 practice.js。
使用 Promise.all 读取 note.txt 和 owner.txt。用读取结果打印 Ada: Buy milk。在输入数组中让 note 排在前面。运行时会执行 node practice.js。
使用导入的读取器。在等待之前启动两次读取;此练习读取器会故意拒绝顺序等待。
使用提供的 noteFile 和 ownerFile 值。使用 other-note.txt other-owner.txt 运行,预期输出为 Bo: Walk。
亲手试试
import { readFile } from './reader.js';
const [noteFile = 'note.txt', ownerFile = 'owner.txt'] = process.argv.slice(2);
const note = '';
const owner = '';
console.log(owner + ': ' + note);
Node.js 基础中的所有课
自己练习: Express 在线编辑器