JavaScript Async/Await

Async/Await in JavaScript is a modern syntax for handling asynchronous operations, introduced in ES2017 (also known as ES8). It simplifies working with promises, making asynchronous code easier to read and maintain by using a more synchronous-looking structure.

How Async/Await Works

Async Functions: An async function is a function declared with the async keyword. It always returns a promise, and within it, you can use the await keyword.


async function greetings() {
    return "Hello, Async!";
}

greetings().then(console.log); // Output: "Hello, Async!"

Await Keyword: The await keyword pauses the execution of the async function until the promise it is waiting for resolves. It can only be used inside async functions.


async function fetchData() {
    let response = await fetch("https://api.example.com/data");
    let data = await response.json();
    console.log(data);
}
fetchData();

Advantages

Improved Readability: Code written with async/await is more linear and easier to understand compared to nested .then() chains.

Error Handling: Errors can be handled more cleanly using try/catch blocks.


async function fetchData() {
    try {
        let response = await fetch("https://api.example.com/data");
        let data = await response.json();
        console.log(data);
    } catch (error) {
        console.error("Error fetching data:", error);
    }
}

Works Well with Promises: Async/await is built on top of promises, so it integrates seamlessly with existing promise-based APIs.

When to Use Async/Await

Use async/await for scenarios involving:

  1. Fetching data from APIs.
  2. Sequential asynchronous operations.
  3. Readable and maintainable code for complex async flows.