Middle+
Kendi promiseAll fonksiyonunuzu uygulayın, bu Promise.all'un bir benzeridir: bir dizi promise alır, orijinal sırayla sonuçlar içeren bir promise döner ve ilk reddedildiğinde — hemen reject çağırır.
sobes.tech yapay zeka
AI'dan gelen yanıt
Функция promiseAll принимает массив промисов и возвращает новый промис, который:
- резолвится массивом результатов, если все промисы успешно завершились,
- реджектится при первом же отклонённом промисе.
Пример реализации:
function promiseAll(promises) {
return new Promise((resolve, reject) => {
const results = [];
let completed = 0;
const total = promises.length;
if (total === 0) {
resolve([]);
return;
}
promises.forEach((p, index) => {
Promise.resolve(p)
.then(value => {
results[index] = value;
completed += 1;
if (completed === total) {
resolve(results);
}
})
.catch(err => {
reject(err);
});
});
});
}
Здесь важно сохранять порядок результатов, поэтому результат записывается по индексу. Если любой промис отклоняется, вызывается reject сразу.