Problem Statement
What does the async keyword do?
Explanation
The async keyword before a function makes it always return a Promise.
If the function returns a value, that value is automatically wrapped in a resolved Promise.
If the function throws an error, it returns a rejected Promise.
Inside an async function, you can use the await keyword to pause execution until a Promise resolves.
Async await provides cleaner syntax for working with Promises compared to then and catch chains.
Code Solution
SolutionRead Only
// Async function always returns Promise
async function greet() {
return 'Hello';
}
greet().then(result => {
console.log(result); // 'Hello'
});
// Same as:
function greetPromise() {
return Promise.resolve('Hello');
}
// Using await
async function fetchData() {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
return data;
}
// Error handling with try catch
async function getData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.log('Error:', error);
}
}
// Multiple awaits
async function getMultipleData() {
const user = await fetchUser();
const posts = await fetchPosts(user.id);
const comments = await fetchComments(posts[0].id);
return {user, posts, comments};
}
// Parallel execution
async function getDataParallel() {
const [user, posts, comments] = await Promise.all([
fetchUser(),
fetchPosts(),
fetchComments()
]);
return {user, posts, comments};
}