Lektionen des Moduls (2/4)
async / await
async/await ist eine übersichtlichere Syntax für die Arbeit mit Promises: Der Code liest sich wie synchroner Code,
verwendet aber im Hintergrund genau die gleichen Promises wie in der vorherigen Lektion.
async function
Eine mit async deklarierte Funktion gibt immer ein Promise zurück.
async function quaranta() {
return 40;
}
quaranta(); // Promise { 40 }
quaranta().then((v) => console.log(v)); // 40Selbst wenn du einen „normalen“ Wert zurückgibst, verpackt die Funktion diesen in ein aufgelöstes Promise.
await
Innerhalb einer async function kannst du await vor ein Promise schreiben: Die Ausführung wird angehalten,
bis das Promise aufgelöst ist, und fährt dann mit dem aufgelösten Wert fort.
async function somma() {
const a = await Promise.resolve(10);
const b = await Promise.resolve(20);
return a + b; // 30
}Äquivalent im .then-Stil (ausführlicher):
function somma() {
return Promise.resolve(10).then((a) => Promise.resolve(20).then((b) => a + b));
}await reicht Fehler weiter
Wenn das Promise abgelehnt (rejected) wird, wirft await den Fehler erneut. Du kannst ihn mit einem ganz normalen
try/catch abfangen:
async function leggi() {
try {
const x = await Promise.reject(new Error('no'));
return x;
} catch (err) {
return 'errore: ' + err.message;
}
}
leggi(); // Promise { 'errore: no' }Asynchrone Arrow-Funktionen
const raddoppia = async (n) => n * 2;
raddoppia(5); // Promise { 10 }Probier es aus
Definiere eine `async function addOne(p)`: Erhält ein Promise, das eine Zahl liefert, und gibt (als Promise) die Zahl + 1 zurück. Verwende await.
Hinweis anzeigen
const n = await p; return n + 1;
Lösung nach 3 Versuchen verfügbar
Wiederholungsübung
Definiere `sumTwo(pa, pb)` als async: Erhält zwei Promises, die Zahlen liefern, und gibt deren Summe zurück. Verwende zwei aufeinanderfolgende awaits.
Hinweis anzeigen
await ognuna, poi return a + b.
Lösung nach 3 Versuchen verfügbar