Heim  >  Artikel  >  Web-Frontend  >  Was sind die asynchronen Programmiermethoden in Javascript?

Was sind die asynchronen Programmiermethoden in Javascript?

清浅
清浅Original
2019-04-19 13:07:412975Durchsuche

Zu den JavaScript-Methoden zur Implementierung der asynchronen Programmierung gehören: Callback-Methoden, die leicht zu verstehen und zu implementieren, aber schwierig zu wartender Code sind, Publish/Subscribe-Methoden, Event-Listening-Methoden, die leicht zu verstehen sind und mehrere Ereignisse binden können, aber einen verwirrenden Workflow haben, und Promises-Methoden

Der asynchrone Modus ist sehr wichtig. Lang laufende Vorgänge auf der Browserseite sollten asynchron ausgeführt werden, um eine Nichtreaktion zu vermeiden. Als nächstes werde ich die Implementierung asynchroner Programmiermethoden in JavaScript im Artikel ausführlich vorstellen, was einen gewissen Referenzeffekt hat und ich hoffe, dass er für alle hilfreich ist.

Was sind die asynchronen Programmiermethoden in Javascript?

[Empfohlene Kurse: JavaScript-Tutorial]

Jeder weiß, dass die Ausführungsumgebung von JavaScript Single-Threading ist, was bedeutet, dass jeweils nur eine Aufgabe ausgeführt werden kann. Wenn Sie auf mehrere Aufgaben stoßen, müssen Sie in der Warteschlange auf den Abschluss der vorherigen Aufgabe warten. Daher dauert es sehr lange. Der synchrone Modus ähnelt diesem Single-Thread-Modus. Der asynchrone Modus ist völlig anders. Wenn eine Aufgabe abgeschlossen ist, führt sie die Rückruffunktion aus Aufgaben können gleichzeitig ausgeführt werden. Die Ausführungsreihenfolge der Aufgaben unterscheidet sich von der Reihenfolge der Aufgaben in der Warteschlange.

Methode 1: Rückrufmethode

Diese Methode ist die grundlegende Methode der asynchronen Programmierung. Angenommen, es gibt zwei Funktionen f1 und f2. Letztere wartet auf die erste Funktion Ergebnis.

F1(); 
F2();

Wenn f1 ein lang andauernder Vorgang ist, können Sie f1 überschreiben und f2 als Rückruffunktion von f1 verwenden.

function f1(callback){
setTimeout(function () {
 callback();
    }, 1000);
}

Mit diesem Modus können synchrone Vorgänge in asynchrone Vorgänge umgewandelt werden. f1 verhindert nicht die Programmausführung, sondern führt zuerst die Hauptlogik aus und führt dann zeitaufwändige Vorgänge aus.

Die Rückruffunktion Der Vorteil besteht darin, dass es leicht zu verstehen und zu implementieren ist. Der Nachteil besteht jedoch darin, dass der Code nicht lesbar und wartbar ist, verschiedene Komponenten stark gekoppelt sind, der Workflow sehr verwirrend ist und jede Aufgabe nur eine Rückruffunktion haben kann.

Methode 2: Veröffentlichen/Abonnieren

Angenommen, es gibt ein Signalzentrum, wenn eine Aufgabe abgeschlossen ist, wird sie veröffentlicht Signal an die Signalzentrale senden und andere Aufgaben können bestimmte Signale von abonnierten Signalzentralen empfangen. Dieser Ansatz wird als Publish/Subscribe-Muster oder Beobachtermuster bezeichnet.

Beispiel: f2 abonniert das Abschlusssignal

jQuery.subscribe(“done”,f2);

von der Signalzentrale und schreibt f1 dann als

function f1(){
    setTimeout(function () {
     jQuery.publish("done");
    }, 1000);
}

jQuery.publish(“done”), um anzugeben, dass es sendet, wenn f1 die Ausführung abschließt Wenn das Signal in der Signalmitte abgeschlossen ist, beginnt f2 mit der Ausführung.

Wenn f2 die Ausführung abschließt, kann es sich abmelden.

jQuery.unsubscribe(“done”,f2);

Methode Drei: Event Listening

Eine weitere Methode ist das ereignisgesteuerte Modell. Die Ausführung einer Aufgabe hängt nicht von der Codesequenz ab Ereignis stattfinden soll. Verwenden Sie in diesem Beispiel weiterhin f1 und f2 und binden Sie zunächst ein Ereignis an f1.

f1.on('done',f2);

Die Bedeutung des obigen Codes besteht darin, dass f2 ausgeführt wird, wenn das Abschlussereignis f1 eintritt.

function f1(){
    setTimeout(function () {
      f1.trigger('done');
    }, 1000);
}

f1.trigger('done') bedeutet, dass das erledigte Ereignis ausgelöst und dann f2 ausgeführt wird, wenn die Ausführung abgeschlossen ist.

Der Vorteil besteht darin, dass es leicht zu verstehen ist und mehrere Ereignisse binden kann, jedes Ereignis viele Rückruffunktionen haben kann und entkoppelt werden kann, was der Modularität zugute kommt. Der Nachteil besteht darin, dass das gesamte Programm ereignisgesteuert ist und der Arbeitsablauf nicht sehr klar ist.

Methode 4: Promises-Methode

Das Promises-Objekt ist ein von CommonJS vorgeschlagener Standard zur Bereitstellung einer gemeinsamen Schnittstelle für asynchrone Programmierung. Jede asynchrone Aufgabe gibt ein Promises-Objekt zurück, das über eine then-Methode verfügt, die das Festlegen einer Rückruffunktion ermöglicht. Beispielsweise sollte die Rückruffunktion f2 von f1:

F1().then(F2)

f1 wie folgt geschrieben werden:

function f1(){
    var dfd = $.Deferred();
    setTimeout(function () {
        dfd.resolve();
    }, 500);
    return dfd.promise;
}

Der Vorteil besteht darin, dass die Rückruffunktionen verknüpft sind und der Workflow von Das Programm ist sehr übersichtlich. Es verfügt über eine Reihe vollständiger Verknüpfungsmethoden, mit denen leistungsstarke Funktionen implementiert werden können.

Zum Beispiel das Einrichten mehrerer Rückruffunktionen:

f1().then(f2).then(f3);

Und ein weiteres Beispiel, wenn ein Fehler auftritt:

f1().then(f2).fail(f3);

Ein Vorteil, den die anderen drei Methoden nicht haben, ist Wenn Sie eine Aufgabe abgeschlossen haben und weitere Rückruffunktionen hinzufügen, werden diese sofort ausgeführt. Der Nachteil ist, dass es nicht leicht zu verstehen ist.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird für alle hilfreich sein.

Das obige ist der detaillierte Inhalt vonWas sind die asynchronen Programmiermethoden in Javascript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn