Menu
CoddyTech

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 中,这样读取成功时就不会输出它。

challenge icon

挑战

简单

先运行 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 在线编辑器