Promise 失败时
本课属于 Coddy Node.js 学习旅程的“Node.js 基础”单元。第 20 课,共 33 课。
Promise 也可能失败,例如文件不存在时。这称为拒绝。.catch 提供失败时要运行的代码。无论成功还是失败,.finally 都会在之后运行,这适合显示结束消息。
readFile('weather.txt', 'utf8')
.then((text) => console.log(text))
.catch(() => console.log('No file'))
.finally(() => console.log('Finished'));读取失败时,会跳过成功回调。这个示例会先输出 No file,然后输出 Finished。失败消息应放在 catch 中,这样读取成功时就不会输出它。
挑战
简单先运行 practice.js:缺失的文件会导致未处理的 ENOENT 错误。
保留读取成功时的回调。添加 .catch,在失败时打印 No notes yet,然后添加 .finally,无论结果如何都打印 Done。不带参数时,输出的两行是 No notes yet 和 Done。试试 note.txt:输出的两行是 Buy milk 和 Done。
亲手试试
import { readFile } from 'node:fs/promises';
readFile(process.argv[2] ?? 'missing.txt', 'utf8').then((text) => console.log(text));
Node.js 基础中的所有课
自己练习: Express 在线编辑器