Promise.all fonksiyonunu kendiniz nasıl yazarsınız?

Cevap

Beklenen davranış: tüm Promise'ler başarılı olunca sonuçları girdi sırasıyla döndürmek, herhangi biri hata verirse hemen reject etmek. Promise olmayan değerler de kabul edilmeli.

function promiseAll(girdiler) {
  return new Promise((resolve, reject) => {
    const liste = Array.from(girdiler);
    const sonuclar = new Array(liste.length);
    let biten = 0;

    if (liste.length === 0) return resolve([]);

    liste.forEach((p, i) => {
      Promise.resolve(p).then((deger) => {
        sonuclar[i] = deger;          // sırayı korumak için index ile yaz
        biten++;
        if (biten === liste.length) resolve(sonuclar);
      }, reject);
    });
  });
}

Dikkat edilecek noktalar: boş dizi, sıranın korunması (push değil index), Promise olmayan değerler için Promise.resolve.

  1. var, let ve const arasındaki fark nedir?KolayJavaScriptFrontend
  2. == ile === arasındaki fark nedir?KolayJavaScriptFrontend
  3. Closure nedir? Bir örnekle açıklayın.OrtaJavaScriptFrontend
  4. Aşağıdaki kodun çıktısı nedir? (Event loop)OrtaJavaScriptFrontend
  5. this anahtar kelimesi nasıl belirlenir? Arrow function'larda ne değişir?OrtaJavaScriptFrontend
  6. Bir debounce fonksiyonu yazın.ZorJavaScriptFrontend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle