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.
Tantangan
MudahPelajaran 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.
count.jssudah mencetakReading...dan mengetahui file yang harus dibaca:fileadalah kata yang diketik setelahnode count.js, ataunotes.jsonjika tidak ada yang diketik.- Baca file itu dengan
fs.readFiledan callback. Semua yang berikutnya terjadi di dalam callback. - Jika pembacaan berhasil, ubah teks menjadi array dengan
JSON.parse. Cetak jumlah catatan yang tersimpan dalam array, diikutinotes. Hitung catatan dalam array, bukan jumlah baris file.notes.jsondimulai dengan dua catatan, jadi cetak2 notes. - Jika pembacaan gagal, artinya error pada callback bukan
null, cetakCannot readdiikuti nama file, bukan jumlah catatannya. - Dalam kedua kasus, cetak
Doneterakhir, juga dari dalam callback.
node count.js mencetak:
Reading...
2 notes
Donenode count.js nothere.json mencetak:
Reading...
Cannot read nothere.json
DoneCoba: 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.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
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