Vier Methoden der asynchronen Programmierung in JavaScript: 1. Callback-Funktion, die die grundlegendste Methode der asynchronen Programmierung ist; für asynchrone Programmierschnittstelle.
Die Betriebsumgebung dieses Artikels: Windows 7-System, JavaScript-Version 1.8.5, DELL G3-Computer
Vier Methoden der asynchronen JS-Programmierung
1. Rückruffunktion, dies ist die grundlegendste Methode der asynchronen Programmierung
Angenommen, es gibt zwei Funktionen f1 und f2, und letztere wartet auf das Ausführungsergebnis der ersteren. Wenn f1 eine zeitaufwändige Aufgabe ist, können Sie in Betracht ziehen, f1 neu zu schreiben und f2 als Rückruffunktion von f1 zu schreiben .
function f1(callback){ setTimeout(function () { // f1的任务代码 callback(); }, 1000); }
Mit dieser Methode verwandeln wir die synchrone Operation in eine asynchrone Operation. F1 blockiert nicht die Ausführung des Programms, was gleichbedeutend damit ist, dass zuerst die Hauptlogik des Programms ausgeführt und die Ausführung zeitaufwändiger Operationen verzögert wird.
Der Vorteil der Rückruffunktion besteht darin, dass sie einfach, leicht zu verstehen und bereitzustellen ist. Der Nachteil besteht jedoch darin, dass sie dem Lesen und Verwalten des Codes nicht förderlich ist und die verschiedenen Teile stark gekoppelt sind (Kopplung). sehr verwirrend, und für jede Aufgabe kann nur eine Rückruffunktion angegeben werden.
2. Ereignisüberwachung
Eine weitere Idee ist die Verwendung des ereignisgesteuerten Modus. Die Ausführung einer Aufgabe hängt nicht von der Reihenfolge des Codes ab, sondern davon, ob ein Ereignis eintritt.
f1.on('done', f2); Wenn das done-Ereignis in f1 auftritt, führen Sie f2 aus.
function f1(){ setTimeout(function () { // f1的任务代码 f1.trigger('done'); }, 1000); }
f1.trigger('done') bedeutet, dass nach Abschluss der Ausführung das Done-Ereignis sofort ausgelöst wird, um mit der Ausführung von f2 zu beginnen.
Der Vorteil dieser Methode besteht darin, dass sie relativ einfach zu verstehen ist, mehrere Ereignisse binden kann, jedes Ereignis mehrere Rückruffunktionen angeben kann und „entkoppelt“ werden kann, was der Modularisierung förderlich ist. Der Nachteil besteht darin, dass das gesamte Programm ereignisgesteuert werden muss und der laufende Prozess sehr unklar wird.
【Empfohlenes Lernen:js Basis-Tutorial】
3. Veröffentlichen/Abonnieren
Wir gehen davon aus, dass es ein „Signalzentrum“ gibt und wenn eine bestimmte Aufgabe abgeschlossen ist, wird sie im Signalzentrum „veröffentlicht“. Signal, andere Aufgaben können dieses Signal von der Signalzentrale „abonnieren“, um zu erfahren, wann sie mit der Ausführung beginnen können. Dies wird als „Publish-Subscribe-Muster“ (Publish-Subscribe-Muster) oder auch als „Observer-Muster“ (Observer-Muster) bezeichnet. Wir können den Betrieb des Programms überwachen, indem wir im „Message Center“ nachsehen, wie viele Signale vorhanden sind und wie viele Abonnenten jedes Signal hat.
jQuery.subscribe("done", f2); //首先,f2向"信号中心"jQuery订阅"done"信号。 function f1(){ setTimeout(function () { // f1的任务代码 jQuery.publish("done"); //f1执行完成后,向"信号中心"jQuery发布"done"信号,引发f2的执行。 }, 1000); } jQuery.unsubscribe("done", f2); //f2完成执行后,也可以取消订阅(unsubscribe)。
4. Promises-Objekt
Das Promises-Objekt ist eine von der CommonJS-Arbeitsgruppe vorgeschlagene Spezifikation mit dem Ziel, eine einheitliche Schnittstelle für die asynchrone Programmierung bereitzustellen. Einfach ausgedrückt besteht die Idee darin, dass jede asynchrone Aufgabe ein Promise-Objekt zurückgibt, das über eine then-Methode verfügt, die die Angabe einer Rückruffunktion ermöglicht.
f1().then(f2); function f1(){ var dfd = $.Deferred(); setTimeout(function () { // f1的任务代码 dfd.resolve(); }, 500); return dfd.promise; }
Die Rückruffunktion wurde im Kettenstil geschrieben. Der Programmablauf ist klar zu erkennen und es gibt einen vollständigen Satz unterstützender Methoden, mit denen viele leistungsstarke Funktionen realisiert werden können.
f1().then(f2).then(f3); //指定多个回调函数 f1().then(f2).fail(f3); //指定发生错误时的回调函数
Wenn eine Aufgabe abgeschlossen ist und eine Callback-Funktion hinzugefügt wird, wird die Callback-Funktion sofort ausgeführt. Sie müssen sich also keine Sorgen machen, ein Ereignis oder Signal zu verpassen. Der Nachteil dieser Methode besteht darin, dass sie relativ schwer zu schreiben und zu verstehen ist.
Das obige ist der detaillierte Inhalt von4 Methoden der asynchronen Programmierung in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!