Async & Promiseseasy
Implement Promise.race(promises)
Implement `Promise.race` from scratch. It should settle as soon as the first input promise settles (resolve or reject).
Asked at Google, Amazon, Meta
Answer
function promiseRace(promises) { return new Promise((resolve, reject) => { for (const p of promises) { Promise.resolve(p).then(resolve, reject) } }) } // Usage promiseRace([ new Promise((res) => setTimeout(() => res('slow'), 100)), new Promise((res) => setTimeout(() => res('fast'), 20)), ]).then(console.log) // "fast"