--- title: Worker slug: Web/API/Worker translation_of: Web/API/Worker ---
{{APIRef("Web Workers API")}}
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 Worker
s mit Zugriff auf js-ctypes in Browser-Erweiterungen (Extension) für den Firefox bitte das {{ domxref("ChromeWorker") }} Objekt nutzen.
Erbt die Eigenschaften seines parents, {{domxref("EventTarget")}}, und implementiert die Eigenschaften von {{domxref("AbstractWorker")}}.
error
den Worker erreicht. Dies ist geerbt von {{domxref("AbstractWorker")}}.message
den Worker erreicht — d.h. der Worker erhält eine Nachricht von seinem übergeordneten document via {{domxref("DedicatedWorkerGlobalScope.postMessage")}}. Diese Nachricht wird innerhalb des Events in der {{domxref("MessageEvent.data", "data")}} Eigenschaft gespeichert.Erbt die Methoden seines parents, {{domxref("EventTarget")}}, und implementiert die Methoden von {{domxref("AbstractWorker")}}.
beliebigen
JavaScript Objekt bestehen.Das nachfolgende Beispiel zeigt wie ein {{domxref("Worker")}} mittels des {{domxref("Worker.Worker", "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).
Specification | Status | Comment |
---|---|---|
{{SpecName('HTML WHATWG', "#worker", "Worker")}} | {{Spec2('HTML WHATWG')}} |
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.
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 4 | {{CompatVersionUnknown}} | 3.5 | 10.0 | 10.6 | 4 |
Constructor name option |
{{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatGeckoDesktop(55)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
onmessageerror |
60 | {{CompatUnknown}} | {{CompatGeckoDesktop(57)}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatUnknown}} |
Feature | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|
Basic support | 4.4 | {{CompatVersionUnknown}} | 3.5 | 10.0 | 11.5 | 5.1 | {{CompatUnknown}} |
Constructor name option |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatGeckoMobile(55)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatVersionUnknown}} |
onmessageerror |
60 | {{CompatUnknown}} | {{CompatGeckoMobile(57)}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
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 {{event("error")}} Event erzeugt.