CodeBlanks Logo Icon CodeBlanks

Promise.all ve Promise.race

JavaScript kursu · Orta seviye · Ders 76/134

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

  1. 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.

  2. 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));
  3. 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

Orta seviye bölümündeki tüm dersler