What is the difference between Promise race and any methods with examples
- Admin
- Mar 6, 2024
- Javascript
A Promise is a JavaScript object utilized for asynchronous operations, facilitating the execution of future tasks with statuses:
pending
: The default initial statefulfilled
: Signifying successful task completion with a valuerejected
: Denoting task failure with a reason.
This feature was introduced since ES6 version in JavaScript.
Example of Promise.any() in JavaScript
The Promise.any()
method accepts iterable promises and returns results as follows:
- Resolves a promise when any one of the promises in the array is resolved.
- Throws an
AggregateError
when all promises are rejected.
Promise.any(iterable promises)
Iterable promises are an array of promises.
It returns a resolved promise as soon as any one of the promises is resolved. If all promises are rejected, it throws an AggregateError
: All promises were rejected.
Let’s explore different use cases.
Case 1: Multiple promises resolved
When multiple promises are resolved,
Promise.any()
returns the first resolved promise.Promise.any([ Promise.resolve("p1 success"), Promise.resolve("p2 success"), Promise.resolve("p3 success") ]) .then((data) => console.log("result", data)) .catch((error) => console.log("error", error))
It returns the first resolved promise Output:
result p1 success
Case 2: One of the promises resolved When one of the promises is resolved:
Promise.any([ Promise.reject("p1 failed"), Promise.resolve("p2 success"), Promise.reject("p3 failed") ]) .then((data) => console.log("result", data)) .catch((error) => console.log("error", error))
Output:
result p2 success
Case 3: All promises rejected
all
method takes three promises. One promise is rejected, 2 processes are resolved and the result is failure and result is all promises are rejected.
Promise.any([
Promise.reject("p1 failed"),
Promise.reject("p2 failed"),
Promise.reject("p3 failed")
])
.then((data) => console.log("result", data))
.catch((error) => console.log("error", error))
error
AggregateError: All promises were rejected
Example of Promise.race() in JavaScript
Promise.race
accepts an iterable of promises and returns the result of the first promise that resolves or rejects.
When all promises are settled (either resolved or rejected), it returns an object:
If the promise is fulfilled
, it returns an object with status=fulfilled
and value
. If the promise is rejected
, it returns an object with status=rejected
and reason
.
Promise.all(iterable promises)
All promises resolved In this example, all promises are resolved:
Promise.race([ Promise.resolve("p1 success"), Promise.resolve("p2 success"), Promise.resolve("p3 success") ]) .then((data) => console.log("result", data)) .catch((error) => console.log("error", error))
Output:
result p1 success
One of the promises rejected In this example, one of the promises is rejected, but the remaining promises are resolved
Promise.race([ Promise.resolve("p1 success"), Promise.reject("p2 failed"), Promise.resolve("p3 success") ]) .then((data) => console.log(data)) .catch((error) => console.log("error", error))
Output:
p1 success
All promises rejected
Promise.race([ Promise.reject("p1 failed"), Promise.reject("p2 failed"), Promise.reject("p3 failed") ]) .then((data) => console.log(data)) .catch((error) => console.log("error", error))
Output:
error p1 failed
What is the difference between Promise race () and Promise any ()?
Promise race | Promise any |
---|---|
Takes an iterable array of promises | Takes an iterable array of promises |
Settles when any of the promises is fulfilled or rejected | Settles when any promise is resolved or all promises are rejected |
Not parallel | Not parallel |