Async steht für asynchron. Man kann async vor eine Funktion oder Klassenmethode setzen.
async function test() {
return true;
}
test();
// Output: Promise …
test().then(alert)
// Output: true
Ruft man jetzt die Funktion auf, erhält man statt dem true ein Promise. Das bedeutet das der Rückgabewert in einem Promise verpackt wird, was erst einmal aufgelöst werden muss.
Await – Wer async sagt sollte await nutzen
…und wer await sagt muss async nutzen. Das Zauberwort bei der Benutzung von async ist await. Mit await weisen wir an, dass wir hier auf noch auf eine Antwort warten und erst dann weiter rechnen wollen. Ein kleines Beispiel: Wir fragen den Supercomputer nach den Sinn des Lebens und wollen das Resultat mit Pi multiplizieren.
async function meaningOflifeAndPi() {
let duration = 1000 // wer lieber eine genaue Reproduktion des Tests durchführen möchte sollte hier 3,1536e+16 statt 1000 Millisekunden eintragen. Dann könnt ihr erstmal paar Tassen Cafe trinken und nebenbei alle Programmiersprachen lernen ...
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve(42), duration)
});
let result = await promise; // wait until the promise resolves (*)
alert( result * Math.PI );
}
meaningOflifeAndPi();
// Output: "131.94689145077132"