Apps Artificial Intelligence CSS DevOps Go JavaScript Laravel Linux MongoDB MySQL PHP Python Rust Vue

JavaScript `Promise.any()`: Ambil Hasil Pertama yang Sukses

1 min read .
JavaScript `Promise.any()`: Ambil Hasil Pertama yang Sukses

Kadang, saya cuma butuh satu hasil sukses dari beberapa operasi asinkron, bukan semua. Kalau pakai Promise.all(), mesti tunggu semuanya atau error. Nah, Promise.any() bikin hidup lebih gampang: selesai segera begitu ada satu promise yang berhasil.

Apa Itu Promise.any()?

Promise.any() menerima iterable promise, dan:

  • Resolve saat ada satu promise yang berhasil.
  • Reject hanya kalau semua promise gagal, dengan AggregateError.
Promise.any([promise1, promise2, promise3]);

Contoh Penggunaan

1. Basic Example

const promise1 = Promise.reject('Gagal 1');
const promise2 = new Promise(res => setTimeout(res, 100, 'Sukses 2'));
const promise3 = new Promise(res => setTimeout(res, 200, 'Sukses 3'));

Promise.any([promise1, promise2, promise3])
  .then(console.log) // "Sukses 2"
  .catch(console.error);

2. Semua Promise Gagal → AggregateError

Promise.any([Promise.reject('Gagal1'), Promise.reject('Gagal2')])
  .catch(console.error); 
// AggregateError: All promises were rejected

3. Fetch dari Beberapa Endpoint

const urls = [
  'https://jsonplaceholder.typicode.com/posts/1',
  'https://jsonplaceholder.typicode.com/posts/2',
  'https://jsonplaceholder.typicode.com/posts/3'
];

Promise.any(urls.map(u => fetch(u)))
  .then(r => r.json())
  .then(console.log)
  .catch(err => console.error('Semua fetch gagal:', err));

Keuntungan Pakai Promise.any()

  • Cepat: Resolve langsung saat ada satu sukses.
  • UX Lebih Baik: Tidak menunggu semua request selesai.
  • Kode Lebih Bersih: Nggak perlu manual cek tiap promise.

Kapan Gunanya?

  • Network Resilience: Ambil data dari server terdekat/tercepat.
  • Fallback: Coba beberapa opsi, ambil yang pertama berhasil.
  • Race Conditions: Hanya butuh hasil tercepat.

Kesimpulan

Gini deh, Promise.any() itu solusi tepat kalau kamu cuma butuh satu sukses dari banyak promise. Pada akhirnya, kode lebih cepat, simpel, dan lebih aman dari error tak terduga.

Lihat Juga

chevron-up