Middle+
20
Өзіңіздің promiseAll функцияңызды жүзеге асырыңыз, ол Promise.all-дың аналогы: уәделердің массивін қабылдайды, нәтижелердің массивімен бірге уәде қайтарады, бірінші қабылдамаған кезде reject-ті дереу шақырады.
Сұралған компаниялар
AI-дан жауап
sobes.tech AI
Функция 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 сразу.