Напишите функцию, которая принимает массив промисов и возвращает результат того, который завершился первым. При этом если первый промис выдал ошибку - необходимо вернуть ее. Причем, решение не должно вызывать Promise.race стандартной библиотеки.
Пример:
const firstPromise = new Promise((resolve) =>
setTimeout(() => resolve(300), 300)
);
const secondPromise = new Promise((resolve) =>
setTimeout(() => resolve(200), 200)
);
const thirdPromise = new Promise((resolve) =>
setTimeout(() => resolve(100), 100)
);
promiseRace([firstPromise, secondPromise, thirdPromise]); // 100
function promiseRace(promises) {
let isResolve = false;
[...promises].forEach((prom) =>
prom.then((p) => {
if (p && !isResolve) {
isResolve = true;
if (p instanceof Error) throw p;
return p;
}
})
);
}
если перед return ставлю console.log, то консоль результат выдает верный, а ретурн undefined. Решение не прошу, но хочу ответ на вопрос, почему так?