CodeBlanks Logo Icon CodeBlanks

Promise.all ile await

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

index.js
// 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

index.js
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

Soru
async function load() {
  const values = ____ Promise.all([Promise.resolve(1), Promise.resolve(2)]);
  console.log(values[0] + values[1]);
}
load();
Cevap
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.

Başlangıç bölümündeki tüm dersler