Menu
CoddyTech

Khi Promise thất bại

Thuộc phần Kiến thức cơ bản về Node.js trong hành trình Node.js của Coddy. Bài học 20 trên 33.

Một promise cũng có thể thất bại, chẳng hạn khi tệp không tồn tại. Trường hợp đó gọi là bị từ chối. .catch cung cấp code để chạy khi có lỗi. .finally chạy sau khi thành công hoặc thất bại, rất hữu ích để hiển thị thông báo kết thúc.

readFile('weather.txt', 'utf8')
    .then((text) => console.log(text))
    .catch(() => console.log('No file'))
    .finally(() => console.log('Finished'));

Khi thao tác đọc thất bại, callback thành công sẽ bị bỏ qua. Ví dụ này in ra No file rồi đến Finished. Thông báo lỗi nên đặt trong catch, để thao tác đọc thành công không in thông báo đó.

challenge icon

Thử thách

Dễ

Chạy practice.js trước: tệp bị thiếu gây ra lỗi ENOENT chưa được xử lý.

Giữ lại callback khi đọc thành công. Thêm .catch để in ra No notes yet khi thất bại, sau đó thêm .finally để in ra Done trong cả hai trường hợp. Khi không có đối số, các dòng là No notes yet và Done. Thử note.txt: các dòng là Buy milk và Done.

Tự làm thử

import { readFile } from 'node:fs/promises';
readFile(process.argv[2] ?? 'missing.txt', 'utf8').then((text) => console.log(text));

Tất cả bài học trong Kiến thức cơ bản về Node.js

Tự luyện tập: Playground Express