Promise.any
Promise.any ile ilk başarılı promise'i yakalamayı öğrenirsin.
Promise.any
Promise.any, verilen promise'lar arasından ilk fulfill olanı döndürür. Reddedilenleri yok sayar; ta ki biri başarılı olana dek bekler. Bu özellik, birden çok yedek uçtan en hızlı cevap vereni seçmek için idealdir.
const winner = await Promise.any([
fetch('/primary'),
fetch('/backup')
]);Eğer tüm promise'lar reddedilirse AggregateError fırlatır; bu hatanın .errors dizisinde her bir reddin sebebi bulunur.
AggregateError
Promise.any tüm promise'lar reddedilirse AggregateError fırlatır. Bu özel hata, her bir promise'ın reddetme sebebini .errors dizisinde toplar.
try {
await Promise.any([p1, p2]);
} catch (e) {
console.log(e.errors);
}Bu sayede, hangi ucu neden kaybettiğini tek bir yerde görebilirsin; hata ayıklama kolaylaşır.
Uygulama Üç uçtan ilk başarılıyı al
primary, backup1 ve backup2 adında üç promise tanımla. primary 100ms sonra 'primary' değeriyle resolve olsun (setTimeout kullan). backup1 50ms sonra 'backup1' değeriyle resolve olsun. backup2 hemen Promise.reject ile reddedilsin. Promise.any ile ilk başarılı sonucu winner değişkenine al ve console.log ile yazdır.
Örnek çözümü göster
const primary = new Promise(r => setTimeout(r, 100, 'primary'));
const backup1 = new Promise(r => setTimeout(r, 50, 'backup1'));
const backup2 = Promise.reject('unavailable');
const winner = await Promise.any([primary, backup1, backup2]);
console.log(winner);
Kendini test et
-
İlk başarılıyı yakala
const fastest = await Promise.____([fetchA(), fetchB(), fetchC()]);Cevabı göster
const fastest = await Promise.any([fetchA(), fetchB(), fetchC()]); -
Üç promise Promise.any'ye verildi ve üçü de reddedildi. Ne olur?
- AggregateError fırlatılır
- undefined döner
- İlk reddedilenin sebebi döner
- Boş bir dizi döner
Cevabı göster
AggregateError fırlatılır — Doğru! Tüm promise'lar reddedilirse Promise.any AggregateError fırlatır.
-
Promise.any özelliklerini eşleştir
- ilk fulfill
- değeri döner
- tümü reject
- AggregateError
- reddedilenler
- yok sayılır
- yedek uçlar
- ilk gelen kazanır