JavaScript Async #17: Concurrency: Promise.all, allSettled, race

1. Apa itu Concurrency?

Concurrency adalah menjalankan beberapa proses asynchronous secara bersamaan agar lebih efisien.

2. Promise.all()

Promise.all() menunggu semua Promise berhasil. Jika satu gagal, semuanya dianggap gagal.

Promise.all([
  Promise.resolve("Data 1"),
  Promise.resolve("Data 2"),
  Promise.resolve("Data 3")
]).then((result) => console.log(result));

3. Promise.allSettled()

Promise.allSettled() menunggu semua Promise selesai, baik berhasil maupun gagal.

Promise.allSettled([
  Promise.resolve("Sukses"),
  Promise.reject("Gagal")
]).then((result) => console.log(result));

4. Promise.race()

Promise.race() mengambil hasil Promise yang selesai paling dulu.

Promise.race([
  new Promise((resolve) => setTimeout(() => resolve("Cepat"), 1000)),
  new Promise((resolve) => setTimeout(() => resolve("Lambat"), 2000))
]).then((result) => console.log(result));

5. Kapan Digunakan?

  • Promise.all() saat semua hasil wajib sukses
  • Promise.allSettled() saat ingin melihat semua hasil
  • Promise.race() saat butuh hasil tercepat

6. Ringkasan

  • Concurrency membantu efisiensi async process
  • Setiap method Promise punya perilaku berbeda
  • Pilih method sesuai kebutuhan flow aplikasi

Di part berikutnya kita membahas microtask vs macrotask queue.