Asynchronous programming is at the heart of modern JavaScript — whether you’re calling an API, reading files, or waiting for timers. While callbacks and .then()
used to be the standard, async/await has made asynchronous code much easier to read and write. In this blog, you’ll learn what async/await is, how it works, and how to use it like a pro.
⏳ Why Async/Await?
Before async/await
, developers used callbacks and promises:
javascriptCopyEditfetch(url)
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
This works, but chaining too many .then()
s gets messy. Async/await cleans it up.
🧠 What is Async/Await?
async
makes a function return a promise.await
makes JavaScript wait for a promise to resolve before moving on.
⚡ You can write asynchronous code in a way that looks synchronous!
✅ Basic Syntax
javascriptCopyEditasync function getData() {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
console.log(data);
}
⚠️ Important Rules
await
can only be used inside async functions- Use
try...catch
to handle errors
🧪 Example: Fetching a Random Joke
javascriptCopyEditasync function fetchJoke() {
try {
let res = await fetch('https://api.chucknorris.io/jokes/random');
let data = await res.json();
console.log("Joke:", data.value);
} catch (error) {
console.error("Failed to fetch joke:", error);
}
}
🔁 Async with Loops
Use for...of
with await
:
javascriptCopyEditconst urls = ['url1', 'url2', 'url3'];
async function fetchAll() {
for (let url of urls) {
let res = await fetch(url);
let data = await res.json();
console.log(data);
}
}
⚠ Avoid using
await
insideforEach()
— it doesn’t wait properly.
🧰 Combine with Promise.all()
If you want all calls to run in parallel:
javascriptCopyEditconst res = await Promise.all([
fetch(url1),
fetch(url2),
fetch(url3)
]);
💡 Real-World Use Cases
- Fetching API data
- Uploading files
- Waiting for animations
- Delaying operations (setTimeout wrapped in promise)
Conclusion:
Async/await simplifies your code and makes it more readable. It’s now the standard way to work with promises in modern JavaScript. Once you get the hang of it, you’ll never want to go back to .then()
chains or messy callbacks.
💡 Tip: Practice rewriting
.then()
chains usingasync/await
to master it faster.