Wir alle wissen, dass der Browser js-Code in einem einzelnen Thread ausführt. Wenn der Seitenschritt ausgeführt wird, kann die Seite auf nichts anderes reagieren, bis der Schritt endet.
WebWorker sind JS-Codes, die unabhängig von anderen Skripten im Hintergrund ausgeführt werden und die Leistung der Seite nicht beeinträchtigen. Wir können weiterhin tun und lassen, was wir wollen: klicken, Inhalte auswählen usw., während die WebWorker im Hintergrund laufen.
Web Worker werden von allen gängigen Browsern außer Internet Explorer unterstützt.
Der erste Schritt: Arbeitskräfte generieren.Rufen Sie den Worker()-Konstruktor auf und geben Sie den URI eines Skripts an, das im Arbeitsthread ausgeführt werden soll. Die aktuelle Seite gibt beispielsweise an, dass das vom Arbeitsthread ausgeführte Skript script-worker.js ist.
var myWorker = new Worker(script-worker.js);
In script-worker.js können wir zusätzlichen Code ausführen, und die Ausführung dieses Codes hat keinen Einfluss darauf, dass die Seite andere Dinge tut, die Sie tun möchten, was großartig klingt.
Schritt 2: Übergeben Sie die Daten.Die Seite kann mit dem Worker interagieren, um Daten zu übertragen, sodass der Worker stillschweigend rechnen kann, ohne die Fähigkeit der Seite zu beeinträchtigen, sinnvolle Dinge zu tun. Weisen Sie die Seite dann an, die Daten zu verwenden.
//[Hauptseitencode]myWorker.postMessage(data-from-mainpage);//[worker code]onmessage = function (oEvent) { console.log(Die von der Hauptseite gesendeten Daten sind: +oEvent.data)) ; };
Das Obige ist die Situation von [die Hauptseite sendet Daten an das Worker-Skript], ja, Sie haben den sehr freundlichen Beitrag gesehenNachricht, okay, das Ding gefällt mir.
//[Hauptseitencode] myWorker.onmessage = function (oEvent) { console.log(Die vom Worker-Skript gesendeten Daten sind: +oEvent.data) //[Worker-Code]postMessage(data-from-) Hauptseite );
Das Obige ist die Situation, in der [ein Worker-Skript Daten an die Hauptseite sendet]. Der Schlüssel liegt darin, dass eine clevere Verwendung von Vorteil ist.
Darüber hinaus kann es zu Fehlern bei der Ausführung des Workers kommen, und die Hauptseite besteht aus:
myWorker.onerror=function(oEvent){};
Sie können Worker-Fehler überwachen.
Schritt 3: Wichtige Punkte.Der Arbeitsthread kann Aufgaben ausführen, ohne die Benutzeroberfläche zu beeinträchtigen. Der ausgeführte JavaScript-Code befindet sich vollständig in einem anderen Bereich und teilt den Bereich nicht mit dem Code auf der aktuellen Webseite.
Die Methode importScripts() wird im globalen Bereich von Worker bereitgestellt, der eine oder mehrere URLs empfängt, die auf JavaScript-Dateien verweisen. Der Ladevorgang wird asynchron durchgeführt.
importScripts() wird nur wirksam, wenn Sie einen absoluten URI angeben, und der Ausführungsprozess ist ebenfalls asynchron.
Wenn wir das WebWorkers-Objekt erstellen, wartet es weiterhin auf Nachrichten (auch nach Abschluss des externen Skripts), bis es beendet wird. Verwenden Sie die Methode myWorker.terminate(), um die WebWorkers zu beenden und die Browser-/Computerressourcen freizugeben.
Schritt 4: Wichtige Einschränkungen.1. Der Zugriff auf DOM-Knoten, globale Variablen oder globale Funktionen ist nicht möglich, es ist nicht möglich, Funktionen wie „alert()“ oder „confirm“ aufzurufen und es ist nicht möglich, auf globale Browservariablen wie „window“ und „document“ zuzugreifen.
2. Javascript in Web Worker kann jedoch weiterhin Funktionen wie setTimeout () und setInterval () verwenden und kann auch das XMLHttpRequest-Objekt für die Ajax-Kommunikation verwenden.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Ich hoffe auch, dass jeder das VeVb Wulin Network unterstützt.