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.

Updated on: 2026-03-15T23:19:00+05:30

177 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements