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.
İlgili JavaScript soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.