Handling asynchronous operations in JavaScript used to rely heavily on callbacks or promises, which could get messy. Enter async/await — a modern syntax that makes asynchronous code look and behave like synchronous code, improving readability and maintainability.
In this blog, we’ll explain how async/await works, with simple examples to get you started.
🧠 What is Async/Await?
async
functions always return a promise.await
pauses the execution of the async function until the promise is resolved or rejected.- It allows you to write asynchronous code that looks like normal, linear code.
🔧 Basic Example
javascriptCopyEditfunction fetchData() {
return new Promise((resolve) => {
setTimeout(() => {
resolve("Data fetched!");
}, 2000);
});
}
async function getData() {
console.log("Start fetching...");
const result = await fetchData();
console.log(result);
console.log("Done!");
}
getData();
Output:
sqlCopyEditStart fetching...
Data fetched!
Done!
✅ Why Use Async/Await?
- Cleaner and easier to understand than chaining
.then()
. - Better error handling with
try/catch
blocks. - Makes sequential and conditional async operations straightforward.
⚠️ Handling Errors
javascriptCopyEditasync function getData() {
try {
const result = await fetchData();
console.log(result);
} catch (error) {
console.error("Error:", error);
}
}
🔗 Combining Multiple Promises
Run promises in parallel using Promise.all
with async/await:
javascriptCopyEditasync function fetchMultiple() {
const [res1, res2] = await Promise.all([fetchData1(), fetchData2()]);
console.log(res1, res2);
}
🚀 Tips for Using Async/Await
- Only use
await
insideasync
functions. - Avoid unnecessary awaits to improve performance.
- Use async/await with APIs that return promises.
Conclusion:
Async/await is a game-changer for writing asynchronous JavaScript. It makes your code more readable and easier to maintain. Start refactoring your promise chains with async/await for better results.
🔥 Pro Tip: Use async/await with fetch API to simplify your network requests!