Promise.all ile await
- Node.js kursu
- Başlangıç
- Ders 97/116
- 5 dk
await Promise.all ile paralel işlemleri öğrenirsin.
await Promise.all
Promise.all'ün sonuçunu await ile bekleyebilirsin; böylece paralel işlerin tümü bitince değer bir dizi olarak gelir. then zincirine göre çok daha okunaklıdır.
async function load() {
const values = await Promise.all([loadA(), loadB()]);
console.log(values);
}Burada her iki load paralel başlar; await ikisi de bitince devam eder. Toplam süre en yavaş olan kadardır. Dizideki sıra, giriş dizisindeki sırayla aynı kalır.
Paralel vs sıralı
İki asenkron işi paralel mi, sıralı mı çalıştıracağını await kullanımı belirler. Paralel için ikisini birden Promise.all'a verip tek await ile beklersin. Sıralı için her birini ayrı ayrı await edersin; bu durumda toplam süre ikisinin toplamı kadar olur.
// paralel
const [a, b] = await Promise.all([loadA(), loadB()]);
// sıralı
const a = await loadA();
const b = await loadB();Paralel genellikle daha hızlıdır; ama bir işin sonuçu diğerine bağlıysa sıralı kullanman gerekir. Doğru seçim, uygulamanın hızını büyük ölçüde etkiler.
Uygulama Sıra sende: await Promise.all
async function load() tanımla. const values = await Promise.all([Promise.resolve(1), Promise.resolve(2)]) yaz. console.log(values[0] + values[1]) ile toplamı yazdır. load() çağır.
Başlangıç kodu
// async function load tanımla
// await Promise.all ile iki değeri al, console.log ile toplamı yazdır
// en sonda load'u çağırÖrnek çözüm
async function load() {
const values = await Promise.all([Promise.resolve(1), Promise.resolve(2)]);
console.log(values[0] + values[1]);
}
load();Beklenen çıktı
3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 await Promise.all([a, b]) hangi durumda REDDEDİLİR?
- a ve b'nin ikisi de başarılı olunca
- a hemen dönünce
- b hiç tamamlanmayınca
- a ya da b reddedilince Doğru cevap
Açıklama: İlk reddedilen tüm Promise.all'i reddeder.
2 await + Promise.all
| Kavram | Anlamı |
|---|---|
await |
sonuçu bekler |
Promise.all |
paralel birleştirir |
sıra |
giriş dizisiyle aynı |
3 Boşluğu doldur: paralel await
async function load() {
const values = ____ Promise.all([Promise.resolve(1), Promise.resolve(2)]);
console.log(values[0] + values[1]);
}
load();
async function load() {
const values = await Promise.all([Promise.resolve(1), Promise.resolve(2)]);
console.log(values[0] + values[1]);
}
load();
Açıklama: await Promise.all sonuçunu bekler.