Advanced JavaScript: Promises and Async/Await

Kevin Diesenberg
3 min readJun 7, 2023

--

JavaScript is a single-threaded language, which means that only one piece of code can be running at a time. This can be a problem when you need to perform tasks that take a long time to complete, such as making a network request or reading from a file.

To solve this problem, JavaScript provides two features called promises and async/await. Promises are objects that represent the outcome of an asynchronous operation. They can be used to chain together multiple asynchronous operations, and they can also be used to handle errors.

Async/await is a new syntax that makes it easier to write code that uses promises. It allows you to write asynchronous code that looks and behaves like synchronous code.

In this blog post, we will explore promises and async/await in more detail. We will see how they can be used to write more efficient and elegant code.

What are promises?

Promises are objects that represent the outcome of an asynchronous operation. They have two properties: a then method and a catch method.

The then method is used to handle the successful completion of an asynchronous operation. It takes a function as its argument, and that function is called when the asynchronous operation completes successfully.

The catch method is used to handle the failure of an asynchronous operation. It takes a function as its argument, and that function is called when the asynchronous operation fails.

Here is an example of how to use promises to make a network request:

const promise = fetch('https://example.com');

promise.then(response => {
// The response object is available here.
});

promise.catch(error => {
// The error object is available here.
});

In this example, we are using the fetch method to make a network request to the URL https://example.com. The fetch method returns a promise, which represents the outcome of the request.

We are using the then method to handle the successful completion of the request. When the request completes successfully, the then method will call the function that we passed to it. That function will have access to the response object, which contains the data that was returned by the server.

We are using the catch method to handle the failure of the request. If the request fails, the catch method will call the function that we passed to it. That function will have access to the error object, which contains information about the error that occurred.

What is async/await?

Async/await is a new syntax that makes it easier to write code that uses promises. It allows you to write asynchronous code that looks and behaves like synchronous code.

Here is an example of how to use async/await to make a network request:

async function get() {
const response = await fetch('https://example.com');
const data = await response.json();

return data;
}

const data = await get();

console.log(data);

In this example, we are using the async and await keywords to make a network request and then get the data that was returned by the server.

The async keyword tells the JavaScript interpreter that the function is asynchronous. This means that the function will not return until the asynchronous operation that it is waiting for has been completed.

The await keyword tells the JavaScript interpreter to wait for the asynchronous operation that it is following to complete before continuing.

In this example, the async and await keywords allow us to write code that looks and behaves like synchronous code. This makes our code more readable and easier to understand.

Conclusion

Promises and async/await are two powerful features that can be used to write more efficient and elegant code. They can be used to handle asynchronous operations, such as making network requests or reading from files.

If you are a JavaScript developer, I encourage you to learn more about promises and async/await. They are valuable tools that can help you write better code.

--

--

Kevin Diesenberg
Kevin Diesenberg

Written by Kevin Diesenberg

Software Engineer | JavaScript | React | Ruby | Rails | SQL | Skydiver | Outdoor Enthusiast | Paramotor Pilot | Cyclist | Edible Mushroom Hunter

No responses yet