Задача
Реализуйте Promise.all: принимает массив промисов, резолвит массив результатов в исходном порядке. Первая же ошибка отклоняет весь результат.
Решение
Оптимальное решение
Promise.myAll = function (promises) { return new Promise((resolve, reject) => { // Пустой массив - сразу резолвим if (promises.length === 0) { return resolve([]); } const results = []; let completed = 0; promises.forEach((promise, index) => { // Promise.resolve() обработает и не-промисы Promise.resolve(promise) .then((value) => { results[index] = value; completed++; // Все промисы выполнены if (completed === promises.length) { resolve(results); } }) .catch((error) => { // Первая же ошибка отклоняет весь Promise.all reject(error); }); }); }); };