The async/await
syntax is a modern approach to handle asynchronous operations in a more synchronous and readable manner. It allows developers to write asynchronous code that looks and behaves more like synchronous code.
Basic Syntax:
The async
keyword is used to define a function as asynchronous, and the await
keyword is used within the function to wait for a Promise to resolve.
async function fetchData() {
try {
// Simulating an asynchronous operation (e.g., fetching data from an API)
const response = await fetch("https://api.example.com/data");
const data = await response.json();
console.log("Data:", data);
} catch (error) {
console.error("Error fetching data:", error);
}
}
// Call the async function
fetchData();
Error Handling:
Async functions can use traditional try...catch
blocks for error handling, providing a cleaner and more structured way to handle errors.
async function example() {
try {
const result = await someAsyncOperation();
console.log("Success:", result);
} catch (error) {
console.error("Error:", error.message);
}
}
// Call the async function
example();
Parallel Execution:
Using Promise.all
with async/await
allows parallel execution of multiple asynchronous operations.
async function parallelOperations() {
try {
const [result1, result2] = await Promise.all([
asyncOperation1(),
asyncOperation2(),
]);
console.log("Result 1:", result1);
console.log("Result 2:", result2);
} catch (error) {
console.error("Error:", error);
}
}
// Call the async function
parallelOperations();
Async Functions and Promises:
Async functions always return a Promise. If a value is explicitly returned, the Promise is resolved with that value; if an error is thrown, the Promise is rejected with the error.
async function returnValueAsync() {
return "Hello, Async/Await!";
}
returnValueAsync()
.then((result) => {
console.log("Returned Value:", result);
})
.catch((error) => {
console.error("Error:", error);
});
Conclusion:
async/await
simplifies asynchronous code by providing a more synchronous-looking syntax. It enhances code readability, error handling, and the ability to work with Promises in a straightforward manner.
Leave a Reply