Es besteht kein Zweifel, dass JavaScript kein Multi -Thread -Sprache gibt. Der Betrieb des Benutzers soll ich tun? Vielen Dank, HTML5 bietet uns einen Multi -Thread -Mechanismus.
1. Arbeiterklasse 1. Methode Einführung(1) Konstruktionsfunktion neuer Arbeiter (ARG): Der Parameter repräsentiert die JS
(2) Worker.PostMessage (Nachricht): Diese Methode gibt an, dass das Senden von Nachrichten vom Haupt Thread an Sub -Threads oder Sub -Threads Nachrichten an den Haupt -Thread senden.
(3) Es gibt auch ein Nachrichtenereignis auf dem Arbeiter.
Sie können sehen, dass die API der Wokerklasse ziemlich präzise ist.
//main.html < </head> <div id = out> </div> <Eingabe type = text name = id = txt> <button id = btn> senden </button> <script type = text/javaScript> var out = document.getElementById (OUT); Skript> </html> // Thread1.jsonMessage Tion (Ereignis) {var res = event.data+hübsch! ; Postmessage (res);}
Wenn ich das Textfeld groß eingehe
Einfache Analyse und Analyse habe ich einen Arbeiterinstanz -Arbeiter im Haupt -Thread von Trip1.js erstellt. .js tun was ist damit? Ja, er hörte dem Meldung Vorfall an. Dann schick es zurück. Der Haupt -Thread hörte auch das Nachrichtenereignis des Arbeiters an, sodass die Nachricht in der Vergangenheit ausgelöst wird und der Nachrichteninhalt in Div angezeigt wird, so dass der obige Effekt angezeigt wird.
Vielleicht benutzt du das? Hier ist es wirklich nutzlos. Operation, weil seine Komplexität o (1) ist (haha, er studiert kürzlich Algorithmen!), Aber wenn es nicht so einfach ist? Der Vorteil dieser Methode ist, wie kompliziert Ihre Sub -Threads den Hauptfaden nicht stoppen
Die Lehrerin ist in der Lage, New Worker () in der Sub -Thread zu erstellen, dass dies nicht möglich ist Überprüfte das offizielle Dokument und stellte fest, dass es keine relevante Beschreibung gab.
Schauen wir uns ein Beispiel für das Aufrufen mehrerer Sub -Threads auf dem Haupt -Thread an:
//main.html < </head> <div id = out> </div> <Eingabe type = text name = id = txt> <button id = btn> senden </button> <script type = text/javaScript> var out = document.getElementById (OUT); .postMessage (Postdata);}, Falsch); out.inNertext = e.data;}, false); ; Postmessage (res);} // Thread2.jsonMessage = Funktion (Ereignis) {var res = event.data+nicht an Sie gelogen! Postmessage (res);
Der Haupt -Thread erfordert zwei Threads, um eine Aufgabe zu erledigen. Es wird mit dem Endergebnis, es wird auf der Seite angezeigt.
Andere JS -Dateien können in Sub -Threads eingeführt und dann aufgerufen werden, z. B. das Beispiel der unteren Seite.
//main.html < </head> <div id = out> </div> <Eingabe type = text name = id = txt> <button id = btn> senden </button> <script type = text/javaScript> var out = document.getElementById (OUT); );}, False); 'Nachricht', Funktion (e) {out.Innertext = e.data; res = Handler (Ereignis.Data); }
Es ist ersichtlich, dass unser Thread1.js keine Datei namens Tools.js hat, aber eine JS -Datei über Importscripts () importiert, und dann können Sie die exponierte Methode aufrufen.
Zweitens, SharedWorker -KlasseDie Essenz des Shared Workers liegt in Share.
Direkte Beispiele zu diskutieren.
Wie man einen benutzt://main.html <!!!!! SharedWorker ('Shared.js'); Daten;} </script> </body> </html> // Shared.jsonConnect = Funktion (e) {var port = e.Ports [0];
Dies ist ein Beispiel aus der W3C.
<! '' Shared.js '); , Falsch) ;; // Hinweis: Benötigen Sie dies, wenn addEventListener -Arbeiter verwendet werden. E.PORTS [0]; E.Target.PostMessage ('Pong');
Die erste Methode ist das Anhören des Nachrichtenereignisses mit dem Ereignisgriff. Sie unterscheiden sich von Worker.
Wie teilen Sharedworker Daten? Bitte sehen Sie sich das folgende Beispiel an.
// Main1 und Main2 sind so <! = Textname = id = txt> <button id = get> GET </button> <schaltfläche id = set> setton> <script> var Worker = New Shared Worker ('Shared.js'); ('Get'); ) {log.Innertext = e.data;}, false); Wert);}, Falsch) ) {var port = e.ports [0]; }}
Analyse hier geben wir Daten in das Textfeld von Main1.html ein, klicken Sie auf Set und klicken dann auf die Methode GET in Main2.html, um die in main1.html einzelnen Fälle festgelegten Daten zu erhalten, genau wie die statische Klasse in Java, nein egal wie viele Nachrichten, es gibt eigentlich nur eine, damit unsere verschiedenen Themen Daten in Shared Worker teilen können. Hier ist das Bild.
Lassen Sie uns schließlich zusammenfassen, Arbeiter und Sharedworker haben kein Aufhängen, das heißt, die Arbeit vor der Bühne zu bewegen, um es hinter den Kulissen zu tun, ohne die Arbeit vor der Bühne zu unterbrechen. Es ist der sogenannte zehn Minuten auf der Bühne und zehn Jahre vor der Bühne. Wenn Sie runter gehen, nur die beste Seite Ihrer besten Seite ist auf der Bühne, zehn Minuten sind genug!