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

#promises#async#polyfill

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"

Practise more Async & Promises questions →