Open In App

Explain Promise.all with async-await in JavaScript

Last Updated : 13 Sep, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

In JavaScript, Promise.all with async-await is used to handle multiple asynchronous operations concurrently. By combining Promise.all with await, you can wait for all promises to resolve or any to reject, ensuring that all asynchronous tasks are complete before proceeding with the next code execution step.

What is Promise.all()?

Promise.all is a JavaScript method that takes an array of promises and returns a single promise that resolves when all the promises resolve or rejects if any promise rejects, making it useful for running tasks concurrently.

Syntax

Promise.all([ first_promise , second_promise, .......])

Example: Following is the pseudo-code which will help you to understand more about Promise.all().

let promise1 = new Promise(()=> resolve(10));
let promise2 = new Promise(()=> resolve(20));
let final_promise = Promise.all([promise1, promise2]);

Async-await

  • Async-await are the two keywords that we use to illustrate a particular function or method as an asynchronous data acceptor.
  • Using async-await keywords we may easily show and capture the asynchronous, promise-based behavior in a very much cleaner style.

Syntax:

let method = async () => {
    let result = await (value);
    .....
}

Now that we have understood in brief about Promise.all() and async-await let us now jump into our task of implementing Promise.all() with async-await.

Example 1: In this example, we will create two promises inside two different functions (or methods) and in another function we will access them using Promise.all() along with making that function async and promise resulting fetching will be done along with the await keyword.

JavaScript
// Defining our first promise
let firstPromise = () => {
    return new Promise((resolve, reject) => {
        resolve("Hello! ");
    });
};

// Defining our second promise
let secondPromise = () => {
    return new Promise((resolve, reject) => {
        resolve("Hi! ");
    });
};

// Async function to perform execution of all promise
let promiseExecution = async () => {
    let promise = await Promise.all([
        firstPromise(),
        secondPromise(),
    ]);
    console.log(promise);
};

// Function call
promiseExecution();

Output:

['Hello! ', 'Hi! ']

Example 2: In this example too we will create two simple promises and one promise in which we will be using a timer function (setTimeout) inside three different methods and one separate method for promises execution.

JavaScript
// Defined our first promise
let firstPromise = () => {
    return new Promise((resolve, reject) => {
        resolve("Hello! ");
    });
};

// Defined our second promise
let secondPromise = () => {
    return new Promise((resolve, reject) => {
        resolve("Hi! ");
    });
};

// Defined our third promise
let thirdPromise = () => {
    return new Promise((resolve, reject) => {
        return setTimeout(() => {
            resolve("GeeksforGeeks");
        }, 2000);
    });
};

// Async function to perform execution of all promise
let promiseExecution = async () => {
    let promise = await Promise.all([
        firstPromise(),
        secondPromise(),
        thirdPromise(),
    ]);
    console.log(promise);
};

// Function call
promiseExecution();

Output:

[ 'Hello! ', 'Hi! ', 'GeeksforGeeks' ]

Conclusion

Using Promise.all with async-await allows you to efficiently manage multiple asynchronous tasks in JavaScript by running them concurrently. This combination not only improves code readability but also enhances performance by ensuring that all asynchronous operations complete before moving to the next step. Understanding and implementing these tools can significantly streamline complex asynchronous workflows in JavaScript applications.



Next Article

Similar Reads