JavaScript is single-threaded, meaning it executes one task at a time. However, real-world applications require handling tasks like API calls, file reading, or database queries without blocking execution. This is where asynchronous JavaScript comes in.
In this short guide, we’ll explore async/await with real-world fetch examples.
Understanding Asynchronous JavaScript
Asynchronous JavaScript allows operations to happen in the background while the main thread continues executing other tasks. Promises and async/await are modern ways to handle asynchronous code.
🔥 Using Async/Await with Fetch
Let’s fetch user data from an API using fetch
and async/await
.
async function fetchUserData() {
try {
let response = await fetch("https://jsonplaceholder.typicode.com/users/1");
let user = await response.json();
console.log("User Data:", user);
} catch (error) {
console.error("Error fetching user data:", error);
}
}
fetchUserData();
Explanation:
fetchUserData
is an async function, meaning it returns a Promise.await fetch(url)
waits for the API response before proceeding.await response.json()
converts the response into a JavaScript object.try...catch
handles errors gracefully.
Chaining Multiple Async Operations
If we need to fetch posts after getting user data:
async function fetchUserAndPosts() {
try {
let userResponse = await fetch("https://jsonplaceholder.typicode.com/users/1");
let user = await userResponse.json();
console.log("User:", user);
let postsResponse = await fetch(`https://jsonplaceholder.typicode.com/posts?userId=${user.id}`);
let posts = await postsResponse.json();
console.log("User Posts:", posts);
} catch (error) {
console.error("Error fetching data:", error);
}
}
fetchUserAndPosts();
In-Summary:
- Async/Await simplifies asynchronous code, making it look synchronous.
- Fetch API is used to make network requests.
- Try/Catch ensures error handling.
- Chaining async calls enables sequential API requests.
Mastering asynchronous JavaScript is essential for building efficient applications. Now go ahead and explore async/await in your projects!