Heim > Web-Frontend > js-Tutorial > Hauptteil

Im Hintergrund ausgeführter JavaScript-Thread – Web Worker

零下一度
Freigeben: 2017-06-25 09:28:34
Original
1423 Leute haben es durchsucht

Um es einfach auszudrücken: Web Worker ist ein JavaScript-Thread, der im Hintergrund läuft und keinen Einfluss auf die Antwort der Seite hat.

Wir wissen, dass JavaScript eine Single-Threaded-Skriptsprache ist, das heißt, sie kann nur eine Sache gleichzeitig ausführen, da es sonst zu äußerst komplexen Synchronisationsproblemen kommt. Beispielsweise verfügt JavaScript über zwei Threads gleichzeitig. Ein Thread ist für das Hinzufügen von Inhalten zu einem bestimmten DOM-Knoten verantwortlich, und der andere Thread löscht den Knoten. Welchen Thread sollte der Browser zu diesem Zeitpunkt als Hauptthread verwenden?

Um das Problem der Synchronisationskomplexität zu vermeiden, ist JavaScript seit seiner Geburt Single-Threaded, was auch ein Merkmal dieser Sprache ist.

Der Single-Thread-Mechanismus von JavaScript verursacht ein Problem. Wenn einige sehr komplexe Aufgaben verarbeitet werden müssen, muss die Seite warten, bis die Aufgabe abgeschlossen ist, bevor sie auf den Vorgang des Benutzers reagieren kann Dies hat negative Auswirkungen auf die Reaktion der Seite und das Benutzererlebnis. Um dieses Problem zu lösen und die Rechenleistung von Multi-Core-CPUs zu nutzen, hat HTML5 den Web Worker-Standard vorgeschlagen um mehrere Threads zu erstellen, aber diese neu erstellten Threads werden als untergeordnete Threads verwendet und unterliegen vollständig der Haupt-Thread-Kontrolle. Und es ist nicht erlaubt, das DOM zu betreiben. Tatsächlich ist es immer noch Single-Threaded-Typ. Daher können wir einige zeitaufwändige Aufgaben an den vom Web Worker erstellten untergeordneten Thread übergeben, um ihn im Hintergrund auszuführen, während die Vordergrundseite weiterhin die Antwort des Benutzers verarbeiten kann.

Da es sich bei dem von Web Worker erstellten Thread um einen eingeschränkten Unterthread handelt, gelten einige Nutzungsbeschränkungen:

  • Web Worker kann nicht auf DOM-Knoten zugreifen

  • Web Worker kann nicht auf globale Variablen oder globale Funktionen zugreifen

  • Web Worker kann keine Funktionen wie „alert()“ oder „confirm“ aufrufen; 🎜>

    Web Worker kann nicht auf globale Browservariablen wie Fenster und Dokument zugreifen.
  • Javascript in Web Worker kann jedoch weiterhin die Klassenfunktionen setTimeout() und setInterval() verwenden Verwenden Sie auch XMLHttpRequest-Objekte für die Ajax-Kommunikation.
Web Worker werden derzeit von allen gängigen Browsern außer Internet Explorer unterstützt.

Freunde, die mit Angular vertraut sind, sollten wissen, dass Angular1 am meisten wegen seines Dirty-Checking-Mechanismus kritisiert wird. Wenn der Bereich zu viele Daten hat, wird die Leistung ernsthaft beeinträchtigt. Angular2 verwendet WebWorker, um schwere Berechnungsarbeiten in den Hilfsthread zu verlagern, sodass der Schnittstellenthread nicht beeinträchtigt wird.

Das obige ist der detaillierte Inhalt vonIm Hintergrund ausgeführter JavaScript-Thread – Web Worker. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage