Question
Answer and Explanation
In JavaScript, you can use multiple await
statements within an async
function to handle asynchronous operations sequentially. Each await
will pause the execution of the function until the promise it's waiting on resolves (or rejects).
Here's a breakdown of how it works and why it's useful:
1. The async
Function:
- To use await
, your function must be declared with the async
keyword. This makes it an asynchronous function, allowing it to use await
inside its block.
2. The await
Keyword:
- The await
keyword can only be used inside an async
function. When an await
is encountered, the function execution pauses at that point until the promise following the keyword is resolved.
3. Sequential Execution:
- Using multiple await
statements makes asynchronous operations occur one after the other, where the next operation won't start until the previous one is complete. This ensures that dependent asynchronous actions are carried out in the correct order.
4. Example Code:
async function fetchDataSequentially() {
try {
console.log("Fetching data 1...");
const data1 = await fetchData(1);
console.log("Data 1:", data1);
console.log("Fetching data 2...");
const data2 = await fetchData(2);
console.log("Data 2:", data2);
console.log("Fetching data 3...");
const data3 = await fetchData(3);
console.log("Data 3:", data3);
console.log("All data fetched!");
} catch (error) {
console.error("Error:", error);
}
}
function fetchData(id) {
return new Promise(resolve => {
setTimeout(() => {
resolve(`Data for ID: ${id}`);
}, 1000);
});
}
fetchDataSequentially();
In the example above, fetchDataSequentially
is an async
function which uses multiple await
statements. Each fetchData
call is waited on before the next call is made. The console logs show the sequence in which the data fetching is performed.
5. Error Handling:
- You can use standard try/catch blocks inside the async
function to handle potential rejections of promises. This makes your async code robust against potential failures.
6. Advantages:
- Multiple await
statements make asynchronous code look and behave like synchronous code. It makes the asynchronous flow much easier to read, write and debug. The program control goes from top to bottom just like synchronous code.
In summary, using multiple await
statements in an async
function is the common method in JavaScript to handle dependent asynchronous operations sequentially. This makes asynchronous JavaScript code more manageable and simpler to comprehend.