Promise.all
- Node.js kursu
- Başlangıç
- Ders 90/116
- 5 dk
Promise.all ile paralel promise'ları öğrenirsin.
Promise.all nedir?
Birden fazla asenkron işi paralel başlatıp hepsinin bitmesini beklemek için Promise.all kullanırsın. Bir Promise dizisi alır ve hepsi fulfilled olduğunda her birinin sonuçunu içeren bir dizi döndürür. İşlemler paralel çalıştığı için toplam süre en yavaş olan kadar olur.
Promise.all([p1, p2, p3])
.then(values => console.log(values));Önemli nokta: dizideki herhangi bir Promise rejected olursa, Promise.all anında o hatayla reddedilir; diğerleri tamamlansa bile sonuç dizisi oluşmaz. Tüm Promise'lar başarıyla tamamlanırsa sonuç dizisi gelir; biri bile reddedilirse hata döner.
Sonuç sırası
Promise.all'in döndürdüğü dizi, giriş dizisindeki Promise'ların sırasını korur. Yani ikinci Promise birinci olandan önce tamamlansa bile, sonuç dizisinde yine ikinci sırada yer alır. Bu özellik, paralel işlemlerin sonuçunu sırayla işlemen gerektiğinde kullanışlıdır.
Promise.all([p1, p2])
.then(values => console.log(values[0], values[1]));Burada p1 ve p2 paralel çalışır; her ikisi de bitince sonuç dizisi [result1, result2] biçiminde gelir. Hız farkından etkilenmezsin; sıralama giriş dizisiyle aynı kalır.
Uygulama Sıra sende: Promise.all ile paralel
const p1 = Promise.resolve(10) ve const p2 = Promise.resolve(20) diye iki Promise oluştur. Promise.all([p1, p2]) çağır ve .then(values => console.log(values[0] + values[1])) ile toplamı yazdır.
Başlangıç kodu
// p1 ve p2 Promise'ları oluştur
// Promise.all ile birleştir, .then ile toplamı yazdırÖrnek çözüm
const p1 = Promise.resolve(10);
const p2 = Promise.resolve(20);
Promise.all([p1, p2]).then(values => console.log(values[0] + values[1]));Beklenen çıktı
30
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Promise.all ne zaman reddedilir?
- İlk Promise tamamlayınca
- Dizideki herhangi bir Promise reddedilince Doğru cevap
- Tüm Promise'lar reddedilince
- Tüm Promise'lar fulfilled olunca
Açıklama: İlk reddedilen Promise tüm zinciri reddeder.
2 Boşluğu doldur: Promise.all
const p1 = Promise.resolve(1);
const p2 = Promise.resolve(2);
____([p1, p2]).then(values => console.log(values));
const p1 = Promise.resolve(1);
const p2 = Promise.resolve(2);
Promise.all([p1, p2]).then(values => console.log(values));
Açıklama: Promise.all tüm sonuçları dizi olarak verir.
3 Promise.all davranışları
| Kavram | Anlamı |
|---|---|
Promise.all |
tümü bitince döner |
paralel |
eşzamanlı çalışır |
reddedilen biri |
tüm zinciri reddeder |