Menu
CoddyTech

Callback

Termasuk bagian Dasar-Dasar Node.js dalam perjalanan Node.js di Coddy. Pelajaran 18 dari 33.

Membaca file besar membutuhkan waktu, dan program yang hanya menunggu file tersebut tidak melakukan hal lain selama itu.

fs.readFile(path, 'utf8', callback) memulai pembacaan dan langsung mengembalikan kendali. Saat file selesai dimuat, Node memanggil callback-mu dengan (err, text). err bernilai null jika berhasil dan berisi error jika tidak, jadi periksa terlebih dahulu. Semua hal yang membutuhkan teks harus dilakukan di dalam callback.

import fs from 'node:fs';

fs.readFile('poem.txt', 'utf8', (err, text) => {
    if (err) {
        console.log('No poem today');
        return;
    }
    console.log(text.split('\n').length + ' lines');
});
console.log('Asked for the poem');

Asked for the poem dicetak lebih dahulu: baris setelah readFile dijalankan saat file masih dimuat.

challenge icon

Tantangan

Mudah

Pelajaran ini membuka contoh baru penghitungan dengan callback di count.js, bukan file alat catatanmu dari Menangani Error. File notes.json, notes.js, dan store.js yang disediakan disertakan; pekerjaanmu sebelumnya tetap tersimpan di pelajarannya sendiri.

Membaca file besar membutuhkan waktu. Dengan callback, Node bisa mengerjakan hal lain sementara itu, lalu memanggil kembali kodemu saat file siap. Latih ini dalam program kecil terpisah, count.js, yang menghitung catatan di sebuah file.

  1. count.js sudah mencetak Reading... dan mengetahui file yang harus dibaca: file adalah kata yang diketik setelah node count.js, atau notes.json jika tidak ada yang diketik.
  2. Baca file itu dengan fs.readFile dan callback. Semua yang berikutnya terjadi di dalam callback.
  3. Jika pembacaan berhasil, ubah teks menjadi array dengan JSON.parse. Cetak jumlah catatan yang tersimpan dalam array, diikuti notes. Hitung catatan dalam array, bukan jumlah baris file. notes.json dimulai dengan dua catatan, jadi cetak 2 notes.
  4. Jika pembacaan gagal, artinya error pada callback bukan null, cetak Cannot read diikuti nama file, bukan jumlah catatannya.
  5. Dalam kedua kasus, cetak Done terakhir, juga dari dalam callback.

node count.js mencetak:

Reading...
2 notes
Done

node count.js nothere.json mencetak:

Reading...
Cannot read nothere.json
Done

Coba: pelajaran ini menjalankan count.js, jadi terminal menampilkan $ node count.js. Tekan Jalankan saat kotak kosong, dan program membaca notes.json. Lalu ketik nothere.json di kotak dan tekan Enter untuk membaca file yang tidak ada.

Coba sendiri

import fs from 'node:fs';

const file = process.argv[2] ?? 'notes.json';

console.log('Reading...');
// Baca file dengan fs.readFile dan fungsi callback.
// Tampilkan jumlah catatan, lalu Done.
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar Node.js

Latihan sendiri: Playground Express