Working with Multiple Promises: Racing Promises
Learn how JavaScript handles multiple promises by racing promises.
We'll cover the following
In the examples so far, promises were used to implement a single asynchronous task. In nontrivial scenarios, we may need multiple asynchronous tasks to be executed to solve a problem.
An analogy
A currency exchange broker may want to pick the best price quote from more than one provider. A promise carries the response for a single asynchronous task, but when dealing with multiple tasks, we need to combine data from multiple asynchronous functions, each returning a promise.
Handling multiple asynchronous functions
JavaScript provides two options for dealing with multiple asynchronous tasks:
- Let the tasks race and pick the first promise that resolves or rejects
- Wait for all the tasks to resolve or for any one of them to reject
Let’s explore each of these options with examples.
Racing promises
The race() static
method of Promise
takes an array of promises and returns the first one to resolve or reject.
Let’s create two promises: one that resolves after a delay and the other that rejects after a timeout has expired.
Get hands-on with 1400+ tech skills courses.