Junior
What is the difference between using Promise and Async/Await in code?
sobes.tech AI
Answer from AI
Promise is an object representing the completion or failure of an asynchronous operation and its resulting value. Async/Await is syntactic sugar over Promise, making asynchronous code more readable and similar to synchronous code.
Main differences:
| Characteristic | Promise | Async/Await |
|---|---|---|
| Syntax | Chains .then(), .catch(), .finally() |
Functions marked with async, with await expressions |
| Readability | Can be less readable with long chains | Significantly improves readability |
| Error handling | Through .catch() |
Through try...catch blocks |
| Compatibility | Standard way to work with asynchronous code | Requires syntax support (Node.js >= 7.6) |
Example with Promise:
// Example of an asynchronous function returning a Promise
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Data successfully received");
}, 1000);
});
}
fetchData()
.then(data => {
console.log(data);
})
.catch(error => {
console.error("Error fetching data:", error);
});
Example with Async/Await:
// Example of an async function
async function fetchDataAsync() {
// await waits for the Promise to resolve
const data = await fetchData();
console.log(data);
}
async function processData() {
try {
// Call async function and handle errors with try...catch
await fetchDataAsync();
} catch (error) {
console.error("Error during processing:", error);
}
}
processData();
Ultimately, Async/Await does not replace Promise but uses them under the hood to simplify writing asynchronous code. The choice between them often depends on developer preference and the complexity of the logic. In most cases, Async/Await is preferable due to its readability.