Async dan Await
Termasuk bagian Dasar-Dasar Node.js dalam perjalanan Node.js di Coddy. Pelajaran 16 dari 24.
Rangkaian pemanggilan .then terbaca berbeda dari cara kamu memikirkan langkah-langkahnya: baca, lalu parse, lalu simpan.
Di dalam fungsi async, await menjeda eksekusi hingga promise selesai dan memberikan nilainya kepadamu. Promise yang gagal akan melempar error di sana, jadi try dan catch menanganinya. Di dalam module, await juga berfungsi di tingkat teratas.
import { readFile } from 'node:fs/promises';
const loadConfig = async () => {
try {
return JSON.parse(await readFile('config.json', 'utf8'));
} catch {
return {};
}
};
const config = await loadConfig();
console.log(config.port ?? 3000);Fungsi async selalu mengembalikan promise, jadi pemanggilnya juga harus menunggunya dengan await. Jika kamu lupa menambahkan await, kamu akan mendapatkan promise itu sendiri, Promise { <pending> }, bukan nilainya.
Tantangan
Mudahstore.jskini membaca dan menulis menggunakannode:fs/promises. Tambahkanawaityang belum ada agar setiap perintah berfungsi seperti sebelumnya.notes.jsmenunggustore.adddanstore.remove, yang kini bersifatasync.
Jalankan node notes.js list terlebih dahulu untuk membaca error, lalu jalankan add dan done 1 setelah semuanya berfungsi.
Coba sendiri
import { existsSync } from 'node:fs';
import { readFile, writeFile } from 'node:fs/promises';
const file = 'notes.json';
// readFile dan writeFile sekarang mengembalikan promise. Tunggu masing-masing dengan await.
const load = async () => {
if (!existsSync(file)) {
return [];
}
try {
return JSON.parse(readFile(file, 'utf8'));
} catch (err) {
console.error(`notes.json is damaged: ${err.message}`);
process.exit(1);
}
};
const store = {
notes: load(),
async save() {
writeFile(file, JSON.stringify(this.notes, null, 2));
},
async add(text) {
this.notes.push(text);
this.save();
return this.notes.length;
},
async remove(n) {
const [text] = this.notes.splice(n - 1, 1);
this.save();
return text;
},
};
export default store;
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, NodeArgumen Baris PerintahPerintahLatihan sendiri: Playground Express