Menu
CoddyTech

Promise

Termasuk bagian Dasar-Dasar Node.js dalam perjalanan Node.js di Coddy. Pelajaran 15 dari 24.

Callback di dalam callback sulit diikuti, dan setiap callback harus mengingat untuk memeriksa err.

node:fs/promises mengembalikan promise: sebuah object yang mewakili hasil yang akan tiba nanti. .then(fn) berjalan dengan hasil tersebut, .catch(fn) berjalan jika ada langkah sebelumnya yang gagal, dan .finally(fn) berjalan dalam kedua kondisi.

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 dilempar di dalam .then juga masuk ke .catch, sehingga satu penangan mencakup pembacaan dan penguraian. Promise yang gagal tanpa .catch akan membuat program crash.

challenge icon

Tantangan

Mudah
  • Tulis ulang count.js dengan readFile dari node:fs/promises dan .then.
  • Jika file tidak ditemukan, sekarang akan mencetak No notes yet, dari .catch.
  • Done tetap muncul terakhir, dari .finally.

Jalankan node count.js, lalu node count.js nothere.json.

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

Latihan sendiri: Playground Express