Lifecycle
Ein Promise geht durch mehrere Status, weshalb wir einen Lifecycle durchlaufen.Promise Lifecylcle
In unserem Code können wir diese verschiedenen States verarbeiten!
Consuming Promises
Wir können Promises über diethen()-Methode konsumieren und so die verschiedenen States behandeln.
Chaining Promises
Damit wir die Callback Hell verhindern können wir Promises verketten. Das machen wir indem wir den nächsten Promise zurückgeben und danach wieder mit der Methodethen() behandeln.
Rejected Promises
Wir können mit dercatch()-Methode rejected Promises abfangen.
Throwing errors manually
Wenn der User bspw. Informationen über ein Land will das gar nicht existiert, lautet die Fehlermeldung:Cannot read property ‘flag’ of undefinedDas bringt dem Nutzer nicht gerade viel. Wenn wir aber einen manuellen Fehler werfen, können wir so die Message darin selbst bestimmen.
catch() abgefangen und behandlelt.
async/await
Mit async/await bietet uns JavaScript eine einfachere Möglichkeit mir Promises zu arbeiten.
try…catch
Mit async/await können wir nicht mehr die catch()-Methode nutzen. Deshalb müssen wir hier mit try…catch-Statements arbeiten.
return-Werte
async-Funktionen können natürlich auch return-Werte haben. Diese sind aber nur über einen Trick zu erhalten.
await ausführen zu können. So können wir direkt auf die Daten zugreifen.
Den
try/catch-Teil brauchen wir nur, wenn wir in der asynchronen Funktion den Error wieder werfen:In Modules, kann auch ein top-level
await genutzt werden, das heisst, man braucht keine IIFE mehr.Building Promises
Promise-Constructor können wir einen neuen Promise erstellen. Die Callback-Funktion darin nimmt zwei Funktionen an:
resolve: Markiert den Promise als fullfilledreject: Markiert den Promise als rejected
then()-Methode konsumieren.
Promisifying
Das Bauen eigener Promises ist vor allem dann nützlich, wenn wir mit Callbacks arbeiten, z.B. bei dersetTimeout()-Methode oder mit der Geolocation API. So können wir nämlich der Callback Hell selbst entkommen.
Promises parallel ausführen
Wenn wir einfach nur sturr mehrereawaits hintereinander ausführen, die aber nicht voneinander abhängig sind, dann verlieren wir kostbare Zeit. Um dies zu umgehen, können wir Promise.all() benutzen. Diese Methode führt alle Calls gleichzeitig aus.