Как реализовать Promise.race?

Middle
235 просмотров
AFK Offer AI

function promiseRace(promises) { return new Promise((resolve, reject) => { promises.forEach(p => { Promise.resolve(p).then(resolve).catch(reject); }); }); }. Первый завершившийся промис (resolve или reject) определяет результат. Promise.resolve(p) обрабатывает не-промисы. Пустой массив — промис никогда не завершится (pending forever). Кейсы: таймаут для запроса — Promise.race([fetch(url), timeout(5000)]). Promise.any похож, но ждёт первый successful, игнорируя reject.

Следующий вопрос

npm vs yarn vs pnpm?