← Kembali ke kursus
Pelajaran kursus · JavaScript
Pelajaran 33

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`.