async/await
Async function, await, try/catch untuk error.
Pahami konsepnya
async function adalah deklarasi yang SELALU mengembalikan Promise. await menjeda eksekusi async function sampai Promise selesai, lalu memberi nilainya — kode async terbaca seperti sinkron.
Error handling: bungkus await dengan try/catch — reject dari Promise berubah menjadi exception yang bisa ditangkap biasa. Ini jauh lebih bersih daripada .catch berantai.
async function yang berisi await lain TIDAK memblokir — hanya fungsi ITU yang menunggu; program lain lanjut. Untuk menjalankan beberapa async secara PARALEL (bukan berurutan), gunakan Promise.all([f1(), f2()]) lalu await hasilnya sekaligus.
Coba contoh kode
function buatPromise(ms, nilai) {
return new Promise(resolve => setTimeout(() => resolve(nilai), ms));
}
async function main() {
// berurutan
const a = await buatPromise(100, "A");
const b = await buatPromise(100, "B");
console.log(a, b); // A B (total 200ms)
// paralel
const [x, y] = await Promise.all([
buatPromise(100, "X"),
buatPromise(100, "Y"),
]);
console.log(x, y); // X Y (total 100ms)
}
main();await berurutan menunggu 200ms total (A lalu B); Promise.all menunggu 100ms saja karena X dan Y berjalan bersamaan. Gunakan Promise.all untuk paralel, await biasa untuk berurutan.
Latihan singkat
Uji: async + await Promise.all → jumlah, harus `30`.