Zum Hauptinhalt springen

Wie man eine Funktion asynchron js macht: Die besten Möglichkeiten und Tipps

In der modernen Programmierung ist die Asynchronität zu einem der wichtigsten Mechanismen geworden, um sicherzustellen, dass Webanwendungen effizient ausgeführt werden. Sie ermöglicht das Ausführen von Vorgängen, ohne die Benutzeroberfläche zu sperren, und reduziert die Gesamtlast des Servers. Die Fähigkeit, Funktionen in js asynchron zu machen, ist im Bereich der Frontend-Entwicklung unersetzlich geworden.

Mit asynchronen Funktionen in js können Sie Operationen ausführen, die viel Zeit in Anspruch nehmen, im Hintergrund, ohne die Ereignisschleife zu blockieren. Wie macht man eine Funktion in js asynchron? In der Tat gibt es mehrere Möglichkeiten, die wir in diesem Artikel behandeln werden. Der Unterschied zwischen ihnen liegt in den verwendeten Keywords und den Arbeitsprinzipien.

Eine Möglichkeit, eine Funktion in js asynchron zu machen, besteht darin, ein Schlüsselwort zu verwenden async vor der Funktionsdeklaration. Dadurch kann die Funktion asynchron ausgeführt und zurückgegeben werden promis statt des Ergebnisses. Eine Promis ist ein Objekt, das eine Schnittstelle für die Arbeit mit asynchronem Code bereitstellt.

So erstellen Sie eine Funktion asynchronem JavaScript: Die besten Möglichkeiten und Tipps

1. Verwendung von Callbacks (callbacks): colbeck ist eine klassische Methode, um asynchrone Programmierung in JavaScript zu implementieren. Die Funktion nimmt einen Kolback als Argument an und ruft ihn nach Abschluss des asynchronen Vorgangs auf. Ein Beispiel:

function fetchData(callback)// Вызов функции с использованием колбэкаfetchData(function(data) );

2. Promises verwenden: promis stellen einen verbesserten Ansatz für die asynchrone Programmierung in JavaScript dar. Sie ermöglichen es Ihnen, die Ergebnisse von asynchronen Vorgängen bequemer zu verarbeiten und ermöglichen es Ihnen, die Kette von Vorgängen zu verfolgen. Ein Beispiel:

function fetchData()  , 1000);>);>// Вызов функции с использованием промисаfetchData().then(function(data) ).catch(function(error) );

3. Verwenden von asynchronen Funktionen (async/await): die async/await-Syntax ist in JavaScript relativ neu und bietet die Möglichkeit, asynchronen Code synchron zu schreiben. Es basiert auf Promis und ermöglicht die Verwendung von async- und await-Schlüsselwörtern zur Verarbeitung asynchroner Vorgänge. Ein Beispiel:

async function fetchData()  , 1000);>);>// Вызов функции с использованием async/awaitasync function getData() catch (error) >getData();

4. Verwenden der Async-Bibliothek: die Async-Bibliothek ist ein leistungsfähiges Werkzeug für die Verwaltung von asynchronem Code in JavaScript. Es bietet viele Funktionen wie async.series, async.parallel und andere, mit denen Sie die sequenzielle und parallele Verarbeitung asynchroner Aufgaben verwalten können. Ein Beispiel für die Verwendung der async-Funktion.series:

const async = require('async');async.series([function(callback) , 1000);>,function(callback) , 500);>], function(error, results) else >);

Verwenden von asynchronem Code mit Promis

Promis sind Objekte, die die Ergebnisse asynchroner Operationen darstellen. Sie haben zwei Zustände: Warten (pending) und erfüllt (fulfilled). Wenn eine Promis abgeschlossen ist, können Sie ihre Ergebnisse mit einer Methode verarbeiten.then() . Bei einem Fehler wird der Promisstatus abgelehnt (rejected), und Sie können den Fehler mithilfe der Methode behandeln.catch() .

Beispiel für die Verwendung von Promis:

function getUserData(userId)  ;resolve(data);>, 2000);>);>getUserData(123).then(data => ).catch(error => );

In diesem Beispiel gibt die Funktion getUserData() eine Promis zurück, die nach 2 Sekunden mit den Benutzerdaten ausgeführt wird. Dann im Block .then() verarbeiten wir diese Daten auch im Block .catch() ist ein Fehler, wenn er auftritt.

Die Verwendung von Promis vereinfacht die asynchrone Programmierung und ermöglicht das Schreiben von sauberem und klarem Code. Sie lassen sich auch in andere Sprachkonstrukte wie asynchrone Funktionen und den await-Operator integrieren, wodurch der Code noch prägnanter und benutzerfreundlicher wird.

Beachten Sie jedoch, dass Promis nicht die einzige Möglichkeit sind, mit asynchronem Code in JavaScript zu arbeiten. Sie können auch Würstchen, asynchrone Funktionen und andere Techniken verwenden, abhängig von den Besonderheiten der Aufgabe.

Arbeiten mit asynchronen Funktionen über async/await

Das async-Schlüsselwort deklariert eine Funktion als asynchron, wodurch die Verwendung des await-Operators darin ermöglicht wird. Der await-Operator unterbricht die Ausführung der Funktion, bis die Promis, auf die sie angewendet wurde, ausgeführt werden.

Beispiel für die Verwendung von async und await :

async function fetchUser() fetchUser().then(user => ).catch(error => );

Im obigen Beispiel ist fetchUser asynchron und verwendet den await-Operator, um auf eine Antwort vom Server zu warten. Nachdem die Daten abgerufen wurden, werden sie zur weiteren Verarbeitung an die then-Methode übergeben. Wenn ein Fehler auftritt, wird er mit der catch-Methode abgefangen.

Außerdem kann der await-Operator innerhalb von for-Schleifen verwendet werden, sodass eine Reihe von asynchronen Operationen nacheinander ausgeführt werden können.

Die Verwendung von async und await vereinfacht das Lesen und Debuggen von asynchronem Code erheblich, wodurch er linearer und verständlicher wird. Beachten Sie jedoch, dass Funktionen, die mit async deklariert werden, immer Promis zurückgeben, auch wenn der Rückgabewert nicht explizit angegeben ist.

Insgesamt ist das Arbeiten mit asynchronen Funktionen über async und await einer der benutzerfreundlichsten und verständlichsten Ansätze für die asynchrone Programmierung in JavaScript.

Anwenden von Callbacks zur Verarbeitung asynchroner Vorgänge

Die Arbeit mit asynchronen Vorgängen kann jedoch aufgrund des nicht linearen Fortschritts der Programmausführung schwierig sein. Um die Ergebnisse solcher Vorgänge zu verarbeiten, werden Callback-Funktionen verwendet, die nach Abschluss des Vorgangs aufgerufen werden.

Die Verwendung von Collabs in JavaScript macht es einfach, asynchrone Vorgänge zu verwalten. Es genügt, eine Handlerfunktion als Argument an eine asynchrone Funktion zu übergeben. Nach Abschluss des Vorgangs wird die Handlerfunktion mit dem Ergebnis der Arbeit oder möglichen Fehlern aufgerufen.

Beispiel für die Verwendung von Callbacks:

// führen Sie eine asynchrone Operation aus

const result = 'Ergebnis der Operation';

const error = null;

// callback mit Ergebnis und Fehler aufrufen

function callback(error, result)

// rufen Sie eine asynchrone Operation mit einem Callback auf

Der Vorteil der Verwendung von Callbacks ist die Flexibilität - Sie können jede Funktionalität des Handlers basierend auf Ihren Anforderungen definieren. Sie können auch mehrere asynchrone Vorgänge nacheinander oder parallel mit Callbacks verarbeiten.

Die Verwendung von Callbacks kann jedoch zu komplexeren Codes führen, da Sie den Fortschritt der Programmausführung innerhalb von Callbacks steuern müssen. JavaScript verwendet auch Promis und asynchrone Funktionen, um die Arbeit mit asynchronen Vorgängen zu vereinfachen.

Verwenden von setTimeout und setInterval zum asynchronen Ausführen von Code

Die setTimeout-Funktion ermöglicht es uns, die Codeausführung nach einer bestimmten Zeit nur einmal auszuführen. Das einzige Argument für diese Funktion ist die Funktion, die wir ausführen möchten, und die Verzögerung in Millisekunden:

setTimeout(function() , задержка);

Auf diese Weise können wir die Ausführung eines bestimmten Codes asynchron ausführen, ohne den Hauptausführungsthread zu blockieren.

Die setInterval-Funktion hingegen ermöglicht es Ihnen, die Codeausführung in bestimmten Intervallen auszuführen nochmals. Es nimmt auch zwei Argumente an: die Funktion, die wir ausführen möchten, und das Intervall in Millisekunden:

setInterval(function() , интервал);

Die Verwendung von setInterval kann nützlich sein, wenn wir bestimmte Vorgänge in bestimmten Zeitabständen durchführen müssen, z. B. Informationen auf einer Webseite aktualisieren oder den Anwendungsstatus überprüfen.

Bei der Verwendung von setInterval ist jedoch Vorsicht geboten, da es Leistungsprobleme und Speicherlecks verursachen kann, insbesondere wenn wir vergessen, das Intervall nach dem Herunterfahren zu löschen.

Im Allgemeinen kann die Verwendung der Funktionen setTimeout und setInterval eine nützliche Möglichkeit sein, eine Funktion in JavaScript asynchron zu machen. Beachten Sie jedoch mögliche Leistungsprobleme und Speicherverwaltungsprobleme und verwenden Sie diese Funktionen ordnungsgemäß in Ihrem Code.

Optimieren der Leistung von asynchronem Code mit Web Workers

Wenn Sie Web Workers verwenden, können Sie komplexe Berechnungen in mehrere Teile aufteilen und parallel ausführen. Dies ist besonders nützlich für Aufgaben, die viel Zeit benötigen, z. B. die Verarbeitung großer Datenmengen oder komplexer Algorithmen.

Um Web Workers zu verwenden, müssen Sie eine separate JavaScript-Datei erstellen, die im Hintergrund ausgeführt wird. Anschließend können Sie diese Datei herunterladen und mithilfe des Worker-Konstruktors eine neue Web Worker-Instanz erstellen. Anschließend können Sie Nachrichten zwischen dem Hauptausführungsthread und dem Web Worker mithilfe der Methoden postMessage und onmessage senden.

Einer der Hauptvorteile von Web Workers ist die Möglichkeit, Aufgaben gleichzeitig auszuführen, was die Reaktionsfähigkeit der Benutzeroberfläche verbessert und die Codeausführung beschleunigt. Es sollte jedoch daran erinnert werden, dass Web Workers keinen Zugriff auf das DOM haben und daher nicht direkt mit der Webseite interagieren können. Sie werden ausschließlich zur Datenverarbeitung verwendet.

Ein weiteres wichtiges Merkmal von Web Workers ist die Unterstützung für Multithreading. Webanwendungen können mehrere Web Workers verwenden, um die Arbeit auf verschiedene Prozessorkerne zu verteilen und eine optimale Leistung zu erzielen.