In short:
Promise.all: Returns all resolved values or first rejected.
Promise.any: Returns first resolved or aggregated all errors
Promise.race: Returns first resolved or rejected
Example1:
const promise1 = Promise.resolve("Hello"); const promise2 = Promise.resolve("World"); const promise3 = Promise.resolve("!"); Promise.all([promise1, promise2, promise3]) .then((results) => console.log("Success:" + results)) .catch((error) => console.log("Error:" + error)); > Success:Hello,World,! Promise.any([promise1, promise2, promise3]) .then((results) => console.log("Success:" + results)) .catch((error) => console.log("Error:" + error)); > Success:Hello Promise.race([promise1, promise2, promise3]) .then((results) => console.log("Success:" + results)) .catch((error) => console.log("Error:" + error)); > Success:Hello
Example2:
const promise1 = Promise.resolve("Hello"); const promise2 = Promise.resolve("World"); const promise3 = Promise.reject("!"); Promise.all([promise1, promise2, promise3]) .then((results) => console.log("Success:" + results)) .catch((error) => console.log("Error:" + error)); > Error:! Promise.any([promise1, promise2, promise3]) .then((results) => console.log("Success:" + results)) .catch((error) => console.log("Error:" + error)); > Success:Hello Promise.race([promise1, promise2, promise3]) .then((results) => console.log("Success:" + results)) .catch((error) => console.log("Error:" + error)); > Success:Hello
Example3:
const promise1 = Promise.reject("Hello"); const promise2 = Promise.resolve("World"); const promise3 = Promise.resolve("!"); Promise.all([promise1, promise2, promise3]) .then((results) => console.log("Success:" + results)) .catch((error) => console.log("Error:" + error)); > Error:Hello Promise.any([promise1, promise2, promise3]) .then((results) => console.log("Success:" + results)) .catch((error) => console.log("Error:" + error)); > Success:World Promise.race([promise1, promise2, promise3]) .then((results) => console.log("Success:" + results)) .catch((error) => console.log("Error:" + error)); > Error:Hello
Example4:
const promise1 = Promise.reject("Hello"); const promise2 = Promise.reject("World"); const promise3 = Promise.reject("!"); Promise.all([promise1, promise2, promise3]) .then((results) => console.log("Success:" + results)) .catch((error) => console.log("Error:" + error)); > Error:Hello Promise.any([promise1, promise2, promise3]) .then((results) => console.log("Success:" + results)) .catch((error) => console.log("Error:" + error)); > Error:AggregateError: All promises were rejected Promise.race([promise1, promise2, promise3]) .then((results) => console.log("Success:" + results)) .catch((error) => console.log("Error:" + error)); > Error:Hello
Please do add any more scenarios you came across.
Thanks.
Top comments (1)
Thanks for the summary.
I use
Promise.all
quite regularly, e.g. getting data from more than one API call and combining the data.What might be good use cases for
Promise.any
andPromise.race
?