Junior
Wat is het verschil tussen het gebruik van Promise en de syntax async/await?
sobes.tech AI
Antwoord van AI
Promise vertegenwoordigt een object dat de uiteindelijke voltooiing of afwijzing van een asynchrone operatie weerspiegelt. Het beheert asynchrone stroom met behulp van callbacks .then() en .catch().
async/await is een syntactisch suiker over Promise, die de asynchrone code leesbaarder maakt en lijkt op synchrone code. Een functie gemarkeerd als async retourneert altijd een Promise. De operator await kan alleen binnen async functies worden gebruikt en pauzeert de uitvoering van de functie totdat de Promise is opgelost of afgewezen, en geeft vervolgens het resultaat terug of genereert een uitzondering.
| Aspect | Promise | Async/Await |
|---|---|---|
| Leesbaarheid | Vereist ketens .then() en .catch() |
Lijkt op synchrone code, lineaire stroom |
| Foutafhandeling | Gebruikt .catch() |
Gebruikt try...catch blokken |
| Uitvoeringsstroom | Beheerd door callbacks | Pauzeert hervat de functie |
| Teruggegeven waarde | Promise | Promise (voor async functies) of resultaat van Promise (voor await) |
| Afhankelijkheid | Onafhankelijk mechanisme | Gebaseerd op Promise |
Voorbeeld met Promise:
// Voorbeeld met Promise
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Gegevens ontvangen (Promise)");
}, 1000);
});
}
fetchDataPromise()
.then(data => console.log(data))
.catch(error => console.error(error));
Voorbeeld met async/await:
// Voorbeeld met async/await
function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Gegevens ontvangen (async/await)");
}, 1000);
});
}
async function showData() {
try {
const data = await fetchDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
showData();