Junior
Was ist der Unterschied zwischen der Verwendung von Promise und der Syntax async/await?
sobes.tech KI
Antwort von AI
Promise stellt ein Objekt dar, das den Abschluss oder die Ablehnung einer asynchronen Operation widerspiegelt. Es verwaltet asynchrone Flüsse mit Hilfe von Callbacks .then() und .catch().
async/await ist ein syntaktischer Zucker über Promise, der asynchronen Code lesbarer und dem synchronen Code ähnlicher macht. Eine als async gekennzeichnete Funktion gibt immer ein Promise zurück. Der Operator await kann nur innerhalb von async-Funktionen verwendet werden und pausiert die Ausführung der Funktion, bis das Promise erfüllt oder abgelehnt wird, und gibt dann das Ergebnis zurück oder löst eine Ausnahme aus.
| Aspekt | Promise | Async/Await |
|---|---|---|
| Lesbarkeit | Erfordert Verkettungen .then() und .catch() |
Ähnlich wie synchroner Code, linearer Fluss |
| Fehlerbehandlung | Verwendet .catch() |
Verwendet try...catch-Blöcke |
| Ausführungsfluss | Wird durch Callbacks gesteuert | Pausiert/fortsetzt die Funktion |
| Rückgabewert | Promise | Promise (für async-Funktion) oder Ergebnis von Promise (für await) |
| Abhängigkeit | Eigenständiger Mechanismus | Basierend auf Promise |
Beispiel mit Promise:
// Beispiel mit Promise
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Daten empfangen (Promise)");
}, 1000);
});
}
fetchDataPromise()
.then(data => console.log(data))
.catch(error => console.error(error));
Beispiel mit async/await:
// Beispiel mit async/await
function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Daten empfangen (async/await)");
}, 1000);
});
}
async function showData() {
try {
const data = await fetchDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
showData();