A better `Promise.race()`
npm install p-race> A better Promise.race()
Improvements:
- Fixes the silly behavior of Promise.race() returning a forever pending promise when supplied an empty iterable, which could create some really hard to debug problems. Promise.race() returns the first promise to fulfill or reject. Check out p-any if you like to get the first promise to fulfill.
- Supports aborting promises using AbortSignal.
``sh`
npm install p-race
`js
import pRace from 'p-race';
Promise.race([]);
// Returns a forever pending promise…
pRace([]);
//=> [RangeError: Expected the input to contain at least one item]
`
#### iterable
Type: Iterable
#### executor
Type: signal => Iterable
##### signal
Type: AbortSignal
You can pass the signal to each iterable's element to abort remaining promises when resolve the first promise.
Requires Node.js 16 or later.
`js
import pRace from 'p-race';
pRace(signal => [
fetch('/api', {signal}),
setTimeout(10, {signal}),
]);
// Remaining promises other than first one will be aborted.
``