Promise
Termasuk bagian Dasar-Dasar Node.js dalam perjalanan Node.js di Coddy. Pelajaran 21 dari 33.
Callback di dalam callback makin sulit diikuti, dan setiap callback harus ingat untuk memeriksa err.
node:fs/promises mengembalikan promise: sebuah objek yang mewakili hasil yang akan tiba nanti. .then(fn) dijalankan dengan hasilnya, .catch(fn) dijalankan jika langkah sebelumnya gagal, dan .finally(fn) dijalankan dalam kedua keadaan.
import { readFile } from 'node:fs/promises';
readFile('poem.txt', 'utf8')
.then((text) => console.log(text.length + ' characters'))
.catch(() => console.log('No poem today'))
.finally(() => console.log('Bye'));Error yang dilemparkan di dalam .then juga masuk ke .catch, jadi satu penanganan mencakup pembacaan dan penguraian. Promise yang gagal tanpa .catch akan membuat program crash.
Tantangan
MudahLangkah ini membuka proyek alat baris perintah catatan yang telah disiapkan untuk kursus, bukan file proyekmu dari Callbacks (termasuk count.js). Pekerjaanmu sebelumnya tetap berada di pelajarannya sendiri. Baca file yang disediakan sebelum mengedit count.js. Salinan ini berisi contoh penghitungan catatan secara asinkron.
- Tulis ulang
count.jsmenggunakanreadFiledarinode:fs/promisesdan.then. - File yang tidak ditemukan sekarang menampilkan
No notes yet, dari.catch. Donetetap muncul terakhir, dari.finally.
Jalankan node count.js, lalu node count.js nothere.json.
Tanpa argumen, output-nya adalah Reading..., 2 notes, lalu Done, masing-masing pada barisnya sendiri. Dengan nothere.json, baris tengahnya adalah No notes yet.
Coba sendiri
import fs from 'node:fs';
const file = process.argv[2] ?? 'notes.json';
console.log('Reading...');
fs.readFile(file, 'utf8', (err, text) => {
if (err) {
console.log(`Cannot read ${file}`);
} else {
console.log(`${JSON.parse(text).length} notes`);
}
console.log('Done');
});
Semua pelajaran di Dasar-Dasar Node.js
1Menjalankan JavaScript di Node
Halo, NodeMembaca PerintahArgumen Baris PerintahPerintah5Peristiwa, Input, dan Package
Dengarkan Sebelum MengirimkanPemancar PeristiwaMembaca InputLatihan sendiri: Playground Express