p-race
TypeScript icon, indicating that this package has built-in type declarations

3.1.0 • Public • Published

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.

Install

npm install p-race

Usage

import pRace from 'p-race';

Promise.race([]);
// Returns a forever pending promise…

pRace([]);
//=> [RangeError: Expected the input to contain at least one item]

API

pRace(iterable | executor)

iterable

Type: Iterable<Promise | unknown>

executor

Type: signal => Iterable<Promise | unknown>

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.

import pRace from 'p-race';

pRace(signal => [
	fetch('/api', {signal}),
	setTimeout(10, {signal}),
]);
// Remaining promises other than first one will be aborted.

Related

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 3.1.0
    12
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 3.1.0
    12
  • 3.0.0
    1
  • 2.1.0
    2,493
  • 2.0.0
    3
  • 1.0.0
    398

Package Sidebar

Install

npm i p-race

Weekly Downloads

2,907

Version

3.1.0

License

MIT

Unpacked Size

5.14 kB

Total Files

5

Last publish

Collaborators

  • sindresorhus