In JavaScript, an async function is a function that's implicit promise. It's declared using the async
keyword before the function keyword. The correct way to declare it is async function() {}
.
Async functions enable us to write promise-based asynchronous code as if it were synchronous, but without blocking the execution thread. It operates asynchronously via the event-loop, uses an implicit Promise to return its result.
Here's an example of how one might define an async function in JavaScript:
async function fetchData() {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
console.log(data);
}
fetchData();
Here fetchData
is an async function. Inside this function, we use the await
keyword to wait for the fetch call and the conversion to JSON to happen.
Async functions can contain an await
expression that pauses the execution of the async function and waits for the passed promise's resolution or rejection, and then resumes the async function's execution and returns the resolved value.
Remember, the await
keyword can only be used inside an async function.
In addition to its asynchronicity, error handling in async functions is much simpler and more straightforward. Instead of using .catch
, you can use ordinary try/catch
blocks.
Example:
async function fetchData() {
try {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
console.log(data);
} catch (error) {
console.error('Error:', error);
}
}
fetchData();
In this example, if anything goes wrong within the try
block (fetch call fails, the response data can't be parsed into JSON, etc.), control goes immediately to the catch
block, allowing the error to be dealt with in a neat and understandable manner.
In conclusion, async/await
improves the readability and reliability of your asynchronous code, making it appear more like synchronous code.