Promise.all ve Promise.race
Birden fazla promise'i paralel yürüten Promise.all ve Promise.race'i öğrenirsin.
Promise.all ile paralel çalışma
Promise.all, bir dizi promise alır ve hepsi tamamlandığında tek bir promise döndürür. Sonuçlar, girdi dizisinin sırasına göre gelir. Dizideki bir promise reddedilirse, Promise.all anında reddeder ve diğer sonuçlar beklemez.
Promise.all([loadUser(), loadPosts()])
.then(results => console.log(results));Bu yöntem, bağımsız işleri paralel yürütmek için idealdir. Hepsinin başarılı olması gerektiğinde kullanılır.
Promise.race ile yarış
Promise.race de bir dizi promise alır, ancak yalnızca ilk yerleşen promise'in sonucunu döndürür. İlk promise başarıysa sonuç başarılı; reddedilse başarısız olur. Geri kalanlar yok sayılır.
Promise.race([fetchWithTimeout(), slowFetch()])
.then(result => console.log(result));Bu yöntem, zaman aşımı kalıbı uygulamak için kullanışlıdır. Hızlı olan yanıt kazandığı için kullanıcıyı bekletmezsin.
Uygulama Promise.all ile paralel yükleme
loadProfile ve loadStats adlı iki fonksiyon birer promise döndürür. Promise.all ile ikisini paralel çalıştır. then ile sonuç dizisini results parametresi olarak al ve console.log ile yazdır. Zincirin sonuna catch ekle ve hatayı yazdır.
Örnek çözümü göster
Promise.all([loadProfile(), loadStats()])
.then(results => console.log(results))
.catch(error => console.log(error));
Kendini test et
-
Promise.all ne zaman reddeder?
- Asla reddetmez
- Dizideki herhangi bir promise reddettiğinde
- Tüm promise'ler tamamlandığında
- Yalnızca ilk promise reddettiğinde
Cevabı göster
Dizideki herhangi bir promise reddettiğinde — Doğru! Promise.all, dizideki herhangi bir promise reddettiğinde anında reddeder.
-
Promise.all çağrısı
Promise.____([loadUser(), loadPosts()]) .then(results => console.log(results));Cevabı göster
Promise.all([loadUser(), loadPosts()]) .then(results => console.log(results)); -
Promise.all ve Promise.race
- Promise.all
- Hepsi tamamlanınca sonuç verir
- Promise.race
- İlk tamamlananı döndürür
- paralel çalışma
- Bağımsız işleri aynı anda yürütmek