Zum Hauptinhalt springen

Was ist promise und warum ist async await?

Promise ist ein Objekt, das in JavaScript für die Arbeit mit asynchronen Operationen verwendet wird. Es stellt das Versprechen dar, dass das Ergebnis der Operation in Zukunft verfügbar sein wird. Mit Promise können Sie asynchrone Vorgänge verwalten und ihre Verwendung vereinfachen.

Asynchrone Operationen werden häufig in JavaScript verwendet, z. B. bei der Arbeit mit einem Netzwerk, Datenbanken oder einem Dateisystem. Mit Promise können Sie solche Vorgänge ausführen, ohne den Hauptlauf des Skripts zu blockieren, wodurch es reaktionsfähiger wird und das «Einfrieren» der Benutzeroberfläche der Anwendung vermieden wird.

Async/await - dies ist syntaktischer Zucker in JavaScript, der im ECMAScript 2017-Standard erschienen ist. Es ermöglicht Ihnen, asynchronen Code so zu schreiben, als wäre er synchron, was ihn verständlicher und benutzerfreundlicher macht. Async/await basiert auf Promise und ist der einfachere und bequemere Wrapper.

Promise: Asynchronisierungsmechanismus in JavaScript

Ein Promise ist ein Objekt, das das Ergebnis einer asynchronen Operation darstellt. Es kann in drei Zuständen sein: warten (pending), abgeschlossen (fulfilled) und abgelehnt (rejected).

Die Grundidee von Promise besteht darin, dass Sie das Ergebnis einer asynchronen Operation verarbeiten können, ohne den Hauptausführungsthread zu blockieren. Promise akzeptiert die Funktion executor, die zwei Argumente akzeptiert - die Funktionen resolve und reject. Resolve wird aufgerufen, wenn der Vorgang erfolgreich ist, und reject wird aufgerufen, wenn ein Fehler auftritt.

Als Ergebnis eines Vorgangsaufrufs kann Promise entweder ausgeführt oder abgelehnt werden. Beide Zustände übergeben ein Argument an den Colback, der bei Ausführung an die then-Methode und bei Ablehnung an die catch-Methode übergeben wurde.

Sie können die then- und Catch-Methoden verwenden, um eine Folge von asynchronen Vorgängen auszuführen, mit denen Sie angeben können, welche Aktionen ausgeführt werden sollen, wenn das Promise erfolgreich ausgeführt oder entsprechend abgelehnt wird.

Mit Promise können Sie auch Fehler innerhalb einer Kette von asynchronen Vorgängen behandeln. Dazu müssen Sie ein neues Promise in der then-Methode zurückgeben und die catch-Methode darin aufrufen. Dadurch werden Fehler innerhalb der Kette gefangen und verhindert, dass sie weitergeleitet werden.

Dank der Promise-Engine kann JavaScript mit asynchronen Operationen effizienter und schöner arbeiten. Es vereinfacht und verbessert die Arbeit mit komplexen Skripts, indem es eine verständlichere und flexiblere Möglichkeit bietet, mit asynchronem Code zu arbeiten.

Promise-StatusDie Beschreibung
Warten (pending)Der ursprüngliche Promise-Status, wenn der Vorgang noch nicht ausgeführt wurde und das Ergebnis noch nicht verfügbar ist.
Abgeschlossen (fulfilled)Der Status, in dem der Vorgang erfolgreich abgeschlossen wurde und das Ergebnis verfügbar ist.
Abgelehnt (rejected)Der Zustand, in dem der Vorgang fehlgeschlagen ist und ein Fehler aufgetreten ist. Das Ergebnis ist nicht verfügbar.

Warum brauchen wir Promis in JavaScript?

Eines der Hauptprobleme bei asynchronem Code in JavaScript besteht darin, dass die Ergebnisse von asynchronen Operationen nicht sofort zurückgegeben werden, sondern nach einiger Zeit oder nach Erfüllung bestimmter Bedingungen. Die Verwendung von Colbacks zur Verarbeitung der Ergebnisse kann zu Verwirrung und Schwierigkeiten beim Lesen und Warten des Codes führen.

Promis lösen dieses Problem, indem sie eine klare und konsistente Möglichkeit bieten, mit asynchronem Code zu arbeiten. Sie sind Objekte, die das Ergebnis eines zukünftigen asynchronen Vorgangs darstellen. Anstatt Colback-Funktionen zu übergeben, um die Ergebnisse zu verarbeiten, können Sie Methoden verwenden .then() und .catch() , um die Logik zu definieren, die nach Abschluss der Promis bzw. eines Fehlers ausgeführt wird.

Promis haben auch eine Reihe anderer nützlicher Merkmale. Sie ermöglichen es Ihnen, eine Kette von asynchronen Vorgängen zu organisieren, indem Sie ihre Ausführung synchronisieren und die Ergebnisse von einer Promis zur nächsten übertragen. Sie können auch mehrere Promis miteinander kombinieren, um eine Aufgabe auszuführen, wenn sie alle abgeschlossen sind.

Die Verwendung von Promis macht den Code klarer, leichter zu lesen und zu pflegen. Sie bieten einen einheitlichen Ansatz für die Verarbeitung von asynchronem Code, der ihn viel sicherer und sicherer macht.

  • Eine einfachere und verständlichere Logik durch eine konsistente und klare Promis-Syntax.
  • Dank der Möglichkeit, Ketten von asynchronen Vorgängen zu organisieren, können Sie Code leichter lesen.
  • Verwalten von Fehlern mithilfe der Methode .catch() und Fehlerbehandlung am Ende der Kette.
  • Es ist einfach, parallele Vorgänge mit der Promise-Methode zu organisieren.all() .
  • Die Schwierigkeit, Code zu lesen und zu unterstützen, liegt an der Verschachtelung von Colback-Funktionen.
  • Es gibt keinen einheitlichen Standard für die Fehlerbehandlung, der zu Inkonsistenzen im Code führen kann.
  • Fehler, die in den Wurstfunktionen nicht behandelt wurden, können zu unkontrollierten Anwendungsfällen führen.

Async/Await: Vereinfachen Sie die Arbeit mit Promis

Async/Await basiert auf Promis und verwendet Funktionen, die mit dem async-Schlüsselwort und dem await-Operator gekennzeichnet sind. Funktionen mit dem async-Schlüsselwort geben eine Promis zurück, und die await-Anweisung hält die Funktion an, bis eine Promis zugelassen oder abgelehnt wurde.

Eines der Hauptprobleme beim Umgang mit Promis ist die Verschachtelung ihrer Anrufe, was zu einem sogenannten "Callback hell" führt - einem Pyramidencode, der schwer zu lesen und zu warten ist. Async/Await vermeidet ein solches Problem, indem Sie Code sequenziell und linear schreiben können.

Mit Async/Await können Sie Fehler in asynchronem Code eleganter behandeln. Anstatt die Methode zu verwenden .catch() oder .then() um Fehler zu behandeln, können Sie einen try-catch-Block wie in synchronem Code verwenden. Dies macht den Code klarer und einfacher zu debuggen.

Async/Await vereinfacht auch das Ausführen gleichzeitiger asynchroner Operationen, da es die Verwendung des Promise-Konstrukts ermöglicht.all(), das auf die Ausführung aller Operationen wartet und die Ergebnisse als Array zurückgibt.

Async/Await ist ein leistungsfähiges Werkzeug, das die Entwicklung von asynchronem Code in JavaScript einfacher und verständlicher macht. Es ermöglicht das Schreiben von Code, der leicht zu lesen, zu warten und zu debuggen ist, und ist eines der besten Werkzeuge, um mit Promis in modernem JavaScript zu arbeiten.

Wie funktionieren async und await in JavaScript?

Stichwort async wird für die Deklaration verwendet asynchroner Funktionen. Eine solche Funktion gibt zurück promise. Innerhalb einer asynchronen Funktion können Sie einen Operator verwenden await warten, bis ein weiterer asynchroner Vorgang abgeschlossen ist.

Operator await kann nur intern verwendet werden async Funktionen. Es unterbricht die Ausführung der Funktion, bis die Promis, die an die await, wird nicht enden. Es gibt dann das Ergebnis der Promis-Ausführung zurück.

Statt mehrstufiger verschachtelter Würstchen (callback hell), async/await kann verwendet werden, um klaren und linearen Code mit asynchronen Vorgängen zu schreiben.

async function getData() catch (error) >getData();

Operator await ermöglicht es uns, den asynchronen Code in synchrone Schritte aufzuteilen, wodurch er verständlicher und vorhersehbarer wird.