Задача
Реализуйте Promise.race: результат определяется первым завершившимся промисом (успешно или с ошибкой).
Решение
Оптимальное решение
Promise.myRace = function (promises) { return new Promise((resolve, reject) => { if (!Array.isArray(promises)) { return reject(new TypeError('Аргумент должен быть массивом')); } // Если массив пустой, промис останется pending навсегда promises.forEach((promise) => { Promise.resolve(promise) .then(resolve) // Первый успешный - резолвим .catch(reject); // Первый с ошибкой - отклоняем }); }); };