Javascript Warten

| | | |

Die in ES6 eingefuhrten Promises ermöglichen Ihnen das einfache Schreiben von asynchronem Code, ohne sich mit verschiedenen Callback-Funktionen befassen zu mussen. Mit Promises mussen Sie sich keine Sorgen uber mehrstufige Callback-Funktionen machen, die sowohl schwer zu schreiben als auch zu warten sind.

Es gibt eine weitere Funktion in JavaScript, die es noch einfacher macht, asynchron zu schreiben Code mit Promises: async/await-Funktionen. Diese ermöglichen es Ihnen, Code zu schreiben, der synchron aussieht, aber tatsächlich asynchrone Routinen ausfuhrt.

In diesem Handbuch werden wir diskutieren, was die async/await-Funktion ist und wie Sie sie in Ihrem . verwenden können Code. Lasst uns beginnen!

Versprechen: Eine Auffrischung

Bevor wir uber async/await-Funktionen sprechen, mussen wir die Versprechen noch einmal zusammenfassen. Ein Promise stellt einen asynchronen Vorgang dar. Es teilt Ihrem Code mit, dass eine Operation ausgefuhrt wird, und wenn die Operation erfolgreich ist, wird ein Wert zuruckgegeben. Andernfalls wird ein Fehler an den Rest Ihres Programms zuruckgegeben.

Ein Promise stellt einen Wert dar, der beim Erstellen des Promises nicht bekannt ist. Ein Versprechen ist genau das: ein Versprechen, dass zukunftige Werte an Ihren Code zuruckgesendet werden. Da Promise ein Objekt ist, muss es großgeschrieben werden.

Betrachten Sie dieses Szenario. Sie mussen eine Ressource von einer API abrufen. Die Bearbeitung Ihrer Anfrage dauert ein bis zwei Sekunden. Anstatt den Benutzer auf die Verarbeitung der Anfrage warten zu lassen, können Sie Ihren Code in ein Promise verschieben, damit der Rest Ihres Programms weiterlaufen kann.

Das bedeutet, dass Sie einen Teil von . weiter rendern können Benutzeroberfläche Ihrer Website, während die Daten abgerufen werden. Sobald ein Wert zuruckgegeben wird, sendet das Promise es an Ihr Hauptprogramm.

Hier ist ein Beispiel fur ein Promise:

Unser Code gibt zuruck: Ihre Cookies wurden gesendet! Wenn wir die Methode sendCookies.then() ausfuhren, wird unser Versprechen initiiert. Unser Programm wartet 1.000 Millisekunden und sendet dann den Wert ‚ÄûIhre Cookies wurden gesendet!‚" zu unserem Hauptprogramm.

So verwenden Sie Async und Await

In einer Async/Await-Funktion blockiert eine Await-Anweisung die Ausfuhrung Ihres Codes in der Async-Funktion, bis ein Promise zuruckgegeben wird Dies ist der Grund, warum Entwickler oft sagen, dass async/await-Funktionen synchron aussehen, aber asynchrone Aufgaben ausfuhren.

Betrachten Sie das folgende Beispiel:

Unser Code gibt zuruck: Ihre Cookies wurden gesendet! Es dauert 1.000 Millisekunden, bis unsere Funktion sendCookies() den Wert ‚ÄûIhre Cookies wurden gesendet‚" zuruckgibt. In diesem Fall haben wir d eine asynchrone Funktion deklariert, damit unser Code auf eine Zusage zur Aufl√∂sung oder Ablehnung wartet.

Die "asynchrone‚" Schlusselwort teilt unserem Code mit, dass wir eine asynchrone Operation in unserer Funktion ausfuhren m√∂chten. Das ‚ÄûWarten‚" Schlusselwort weist unseren Code an, auf die Ruckgabe des sendCookies()-Versprechens zu warten, bevor unser Programm weiter ausgefuhrt wird.

Async-Funktionen geben immer ein Promise zuruck.

Verwenden von Async und Await with Multiple Steps

Async/await-Funktionen werden am häufigsten verwendet, wenn Sie mit mehreren Promises arbeiten mussen. Dies wird manchmal als Verkettung von Versprechen bezeichnet. Dies liegt daran, dass Ihr Code bei jedem Schritt darauf wartet, dass ein Versprechen zuruckgegeben wird, bevor er zum nächsten ubergeht:

Unser Code gibt Folgendes zuruck:

Jeder Schritt dauert 1.000 Millisekunden. Unsere sendCookies()-Funktion wird erst ausgefuhrt, wenn das Promise von unserer processOrder()-Funktion zuruckgegeben wurde.

Async-Ausdrucke

Es gibt drei Möglichkeiten, eine async/await-Funktion zu verwenden.

Der erste Weg ist der Ansatz, den wir in unseren letzten Beispielen gezeigt haben: durch das Deklarieren von Funktionen. In unseren Beispielen haben wir Funktionen deklariert, die ein Promise zuruckgeben, dann haben wir die "async‚" und ‚Äûwarten‚" Schlusselw√∂rter zum Ausfuhren dieser Funktionen.

Sie können eine asynchrone Funktion auch mit Pfeilfunktionen deklarieren:

Dieser Code gibt zuruck: Ihre Cookies wurden gesendet! Es’ Es entspricht unserem ersten Beispiel, aber anstatt eine main()-Funktion zu deklarieren, haben wir eine Pfeilfunktion verwendet.

Ähnlich können Sie die Syntax des Funktionsausdrucks verwenden:

Dieser Code gibt zuruck: Ihre Cookies wurden gesendet! Wie Sie sehen, ist die Ausgabe wieder dieselbe. Der einzige Unterschied besteht darin, wie wir unsere Funktion deklariert haben.

Tats√§chlich ist diese Syntax unserem letzten Beispiel sehr √§hnlich. Wir haben gerade die "Funktion()‚" Schlusselwort anstelle einer Pfeilfunktion zu verwenden.

Es gibt keine beste Möglichkeit, eine async/await-Funktion zu deklarieren. Es hängt alles davon ab, welches Programm Sie schreiben und welche Syntax Sie bevorzugen. Obwohl Sie argumentieren könnten, dass Pfeilfunktionen die prägnanteste Methode sind, können andere Möglichkeiten zum Deklarieren einer Async/Await-Funktion in anderen Fällen besser sein.

Verarbeiten von Webanforderungen mit Async/Await

Eine der häufigsten Verwendungen der async/await-Funktion besteht darin, Webanforderungen mit einer Promise-basierten API wie fetch() zu verarbeiten. Weitere Informationen zur Verwendung der Funktion fetch() finden Sie in unserem Anfängerleitfaden zum JavaScript-Abruf.

Betrachten Sie dieses Beispiel:

Unser Code gibt Folgendes zuruck:

Wenn wir unsere retrieveComments()-Funktion ausfuhren, verwenden wir die "wait‚" -Schlusselwort, um auf die Ausfuhrung unserer fetch()-Anweisung zu warten. Das bedeutet, dass der Rest unseres Programms nicht fortgesetzt wird, bis unsere Webanfrage bearbeitet wurde. Dies liegt daran, dass die Funktion fetch() ein Promise zuruckgibt.

Wenn die Funktion fetch() ein Promise zuruckgibt, konvertieren wir den zuruckgegebenen Wert in JSON. Dann mappen wir durch das Objekt, um eine Liste der Namen aller Kommentare abzurufen und diese Liste an die Konsole auszugeben.

Wie man einen Fehler behandelt

Oh, wie sehr wunschte ich mir, dass Fehler im Code nicht vorkommen. Aber sie tun es und das ist etwas, das wir Entwickler haben planen mussen. In einer asynchronen Funktion erfolgt die Fehlerbehandlung synchron mit einer try…catch-Anweisung. Betrachten Sie diesen Code:

Unser Code gibt zuruck:

In unserem Beispiel haben wir eine .catch()-Anweisung verwendet, um den von unserem zuruckgegebenen Fehler auszudrucken Funktion, wenn eine zuruckgegeben wird. In diesem Fall verwenden wir restore(‘Error’), um unserem Code mitzuteilen, dass ein Fehler aufgetreten ist.

Wenn diese Anweisung ausgefuhrt wird, wird unsere .catch()-Anweisung ausgefuhrt und gedruckt diesen Fehler.

Ähnlich können asynchrone Funktionen Syntaxfehler abfangen:

Unser Code gibt Folgendes zuruck: NetworkError beim Versuch, eine Ressource abzurufen. In diesem Beispiel haben wir eine try/catch-Anweisung verwendet, um zu uberprufen, ob unsere Methode await ein erfolgreiches Promise zuruckgegeben hat. Auch hier ist unsere API nicht gultig, was dazu fuhrt, dass unser Programm unser Versprechen ablehnt. In diesem Fall wird der "Fang‚" -Anweisung in unserem try/catch-Block ausgefuhrt wird, die unseren Fehler in der Konsole protokolliert.

Schlussfolgerung

Async/await-Funktionen helfen Ihnen, asynchrone Operationen in Ihren Code zu schreiben. Wenn eine asynchrone Funktion deklariert ist, k√∂nnen Sie die Funktion "wait‚" Schlusselwort, um darauf zu warten, dass Vorg√§nge aufgel√∂st werden. Das Schlusselwort await muss mit einer Funktion verwendet werden, die ein Promise zuruckgibt.

Jetzt sind Sie bereit, asynchrone/wait-JavaScript-Funktionen wie ein Experte zu verwenden!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method