Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
How does Promise.any() method differs from Promise.race() method in JavaScript?
In this article, you will understand how Promise.any() method differs from Promise.race() method in JavaScript.
The Promise.any() method resolves when the first promise succeeds (fulfills), ignoring rejections until all promises fail. The Promise.race() method settles when the first promise completes, regardless of whether it succeeds or fails.
Promise.any() Method
Promise.any() waits for the first successful promise and ignores rejections. If all promises reject, it throws an AggregateError.
console.log("Defining three promise values: promise1, promise2 and promise3");
const promise1 = Promise.resolve(1);
const promise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 200, 'Promise Two');
});
const promise3 = Promise.resolve(3);
console.log("\nRunning Promise.any method on all the three promise values");
Promise.any([promise1, promise2, promise3]).then((value) => {
console.log("First fulfilled promise:", value);
});
Defining three promise values: promise1, promise2 and promise3 Running Promise.any method on all the three promise values First fulfilled promise: 1
Promise.race() Method
Promise.race() settles as soon as the first promise settles, whether it resolves or rejects.
console.log("Defining three promise values: promise1, promise2 and promise3");
const promise1 = Promise.resolve("Resolving first async promise");
const promise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 200, 'Promise Two');
});
const promise3 = Promise.resolve(3);
console.log("\nRunning Promise.race method on all the three promise values");
Promise.race([promise1, promise2, promise3]).then((value) => {
console.log("First settled promise:", value);
});
Defining three promise values: promise1, promise2 and promise3 Running Promise.race method on all the three promise values First settled promise: Resolving first async promise
Key Difference with Rejections
The main difference becomes clear when promises reject:
const fastReject = Promise.reject("Fast rejection");
const slowResolve = new Promise(resolve => setTimeout(resolve, 100, "Success"));
// Promise.race() - returns the first settled (even if rejected)
Promise.race([fastReject, slowResolve])
.then(value => console.log("Race resolved:", value))
.catch(error => console.log("Race rejected:", error));
// Promise.any() - waits for first fulfillment, ignores rejections
Promise.any([fastReject, slowResolve])
.then(value => console.log("Any resolved:", value))
.catch(error => console.log("Any rejected:", error.message));
Race rejected: Fast rejection Any resolved: Success
Comparison
| Method | Returns | Behavior with Rejections |
|---|---|---|
Promise.race() |
First settled promise | Settles immediately on first rejection |
Promise.any() |
First fulfilled promise | Ignores rejections, waits for first success |
Conclusion
Use Promise.race() when you need the fastest response regardless of success or failure. Use Promise.any() when you need the first successful result and want to ignore failures.
