Das Worker Interface der Web Workers API beschreibt eine im Hintergrund ausgeführte Programmlogik, die leicht erstellt werden kann und Nachrichten mit dem Ersteller austauschen. Einen Worker erzeugen erfolgt einfach über den Aufruf des Worker() Konstruktors unter Angabe eines Scripts, welches in dem Worker Thread ausgeführt werden soll.

Worker selbst können zudem weitere (sog. "verschachtelte") Worker erzeugen, solange diese in demselben origin wie die übergeordnete Seite liegen (Achtung: verschachtelte Worker sind aktuell nicht in Blink implementiert).  Zusätzlich können Worker das XMLHttpRequest nutzen, um auf Netzwerk I/O zuzugreifen, unter der Voraussetzung, dass die Attribute responseXML und channel des XMLHttpRequest immer den Wert null zurück liefern.

Nicht alle Interfaces und Funktionen sind verfügbar für das mit dem Worker assoziierte Script.

Zur Verwendung eines Workers mit Zugriff auf js-ctypes in Browser-Erweiterungen (Extension) für den Firefox bitte das ChromeWorker Objekt nutzen.

Constructors

Worker()
Erzeugt einen neuen Web Worker, der das über seine URL referenzierte Script ausführt. Worker können auch über Blobs erzeugt werden.

Properties

Erbt die Eigenschaften seines parents, EventTarget, und implementiert die Eigenschaften von AbstractWorker.

Event handlers

AbstractWorker.onerror
Ein EventListener, welcher jedesmal dann aufgerufen wird, wenn ein ErrorEvent des Typs error den Worker erreicht. Dies ist geerbt von AbstractWorker.
Worker.onmessage
Ein EventListener, welcher jedesmal dann aufgerufen wird, wenn ein MessageEvent des Typs message den Worker erreicht — d.h. der Worker erhält eine Nachricht von seinem übergeordneten document via DedicatedWorkerGlobalScope.postMessage. Diese Nachricht wird innerhalb des Events in der data Eigenschaft gespeichert.
Worker.onmessageerror
Der EventHandler, dessen Code aufgerufen werden soll, wenn es zu einem messageerror Event kommt.

Methods

Erbt die Methoden seines parents, EventTarget, und implementiert die Methoden von AbstractWorker.

Worker.postMessage()
Sendet eine Nachricht an den Worker. Diese kann dabei aus einem beliebigen JavaScript Objekt bestehen.
Worker.terminate()
Beendet den Worker unmittelbar. Hierüber besteht dabei nicht die Möglichkeit, dem Worker die Gelegenheit für ein geordnetes Beenden von laufenden Operationen zu geben. Vielmehr wird der Worker sofort beendet. ServiceWorker Instanzen unterstützen diese Methode nicht.

Example

Das nachfolgende Beispiel zeigt wie ein Worker mittels des Worker() Konstruktors erzeugt und verwendet wird:

var myWorker = new Worker('worker.js');
var first = document.querySelector('#number1');
var second = document.querySelector('#number2');

first.onchange = function() {
  myWorker.postMessage([first.value,second.value]);
  console.log('Message posted to worker');
}

Ein vollständiges Beispiel findet sich hier: Basic dedicated worker example (run dedicated worker).

Specifications

Specification Status Comment
HTML Living Standard
Die Definition von 'Worker' in dieser Spezifikation.
Lebender Standard  

Browser compatibility

Die Unterstützung der einzelnen Worker ist abhängig vom Typ und variiert. Wie ein Worker konkret unterstützt wird, kann der Seite zu dem Worker Typ entnommen werden.

Wir konvertieren die Kompatibilitätsdaten in ein maschinenlesbares JSON Format. Diese Kompatibilitätstabelle liegt noch im alten Format vor, denn die darin enthaltenen Daten wurden noch nicht konvertiert. Finde heraus wie du helfen kannst!

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 4 (Ja) 3.5 10.0 10.6 4
Constructor name option (Ja) ? 55 (55) ? ? ?
onmessageerror 60 ? 57 (57) Nicht unterstützt ? ?
Feature Android Edge Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support 4.4 (Ja) 3.5 10.0 11.5 5.1 ?
Constructor name option ? ? 55.0 (55) ? ? ? (Ja)
onmessageerror 60 ? 57.0 (57) Nicht unterstützt ? ? ?

Cross-origin worker error behaviour

In früheren Browserversionen kam es zu einem SecurityError bei dem Versuch ein Script für einen cross-origin worker zu laden. In neueren Browsern wird, aufgrund einer Änderung der Spezifikation, stattdessen ein error Event erzeugt. Mehr über den Umgang mit solchen Fehlern ist hier zu finden: Loading cross-origin worker now fires error event instead of throwing; worker in sandboxed iframe no longer allowed.

See also

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: dennissterzenbach
 Zuletzt aktualisiert von: dennissterzenbach,