What are static methods of Promise class in JS?

The JavaScript Promise class provides several static methods that allow developers to work with promises effectively.

Promise.resolve(value)

  • Creates a promise that is resolved with the given value.
  • To quickly wrap a value or an already resolved promise into a promise.

Promise.reject(reason)

  • Creates a promise that is rejected with the given reason.
  • To create a rejected promise for error scenarios.

Promise.all(iterable)

  • Takes an iterable (e.g., an array) of promises and returns a single promise that:
    • Resolves when all promises are resolved.
    • Rejects as soon as one promise is rejected.
    • Usage: To wait for multiple asynchronous operations to complete.
const p1 = Promise.resolve(10);
const p2 = Promise.resolve(20);
const p3 = Promise.resolve(30);

Promise.all([p1, p2, p3]).then((values) => console.log(values)); // [10, 20, 30]
  • Handle error
const p1 = Promise.resolve(10);
const p2 = Promise.reject("Error in p2");
const p3 = Promise.resolve(30);

Promise.all([p1, p2, p3])
.then((values) => console.log(values))
.catch((error) => console.error(error)); // "Error in p2"

Promise.allSettled(iterable)

  • Takes an iterable of promises and returns a single promise that resolves when all promises settle (either resolve or reject). The result is an array of objects describing the outcome.
  • Usage: To handle both resolved and rejected promises together.
const p1 = Promise.resolve(10);
const p2 = Promise.reject("Error in p2");
const p3 = Promise.resolve(30);

Promise.allSettled([p1, p2, p3]).then((results) =>
console.log(results)
);
/* Output:
[
{ status: "fulfilled", value: 10 },
{ status: "rejected", reason: "Error in p2" },
{ status: "fulfilled", value: 30 }
]
*/

Promise.race(iterable)

  • Takes an iterable of promises and returns a promise that resolves or rejects as soon as the first promise settles (resolves or rejects).
  • Usage: To act on the fastest promise.
const p1 = new Promise((resolve) => setTimeout(resolve, 500, "p1"));
const p2 = new Promise((resolve) => setTimeout(resolve, 100, "p2"));

Promise.race([p1, p2]).then((value) => console.log(value)); // "p2"

Promise.any(iterable)

  • Takes an iterable of promises and returns a promise that resolves as soon as any promise resolves. If all promises reject, it rejects with an AggregateError.
  • Usage: To act on the first successful promise, ignoring failures.
const p1 = Promise.reject("Error in p1");
const p2 = Promise.reject("Error in p2");
const p3 = Promise.resolve("Success in p3");

Promise.any([p1, p2, p3])
.then((value) => console.log(value)) // "Success in p3"
.catch((error) => console.error(error));
  • If all promises reject
Promise.any([Promise.reject("Error1"), Promise.reject("Error2")])
.then((value) => console.log(value))
.catch((error) => console.error(error.errors)); // ["Error1", "Error2"]