--- title: Web Worker API slug: Web/API/Web_Workers_API translation_of: Web/API/Web_Workers_API ---
{{DefaultAPISidebar("Web Workers API")}}
Web Workers ermöglichen Entwicklern Skripte in einem Hintergrundthread getrennt vom Haupthread auszuführen. Dies hat den Vorteil, dass rechenintensive Operationen in einem gesonderten Thread ausgeführt werden können und somit der Hauptthread, der für gewöhnlich das UI bereitstellt, arbeiten kann ohne verlangsamt oder blockiert zu werden.
Ein Worker ist ein Objekt das mit einem Konstruktor erzeugt wird (beispielsweise {{domxref("Worker.Worker", "Worker()")}}) und eine JavaScript Datei mit Namen ausführt. In dieser Datei ist der Code enthalten der im Worker-Thread ausgeführt wird. Worker arbeiten in einem eigenen globalen Kontext, der vom aktuellen Hauptkontext {{domxref("window")}} verschieden ist. Dieser Kontext ist durch das Objekt {{domxref("DedicatedWorkerGlobalScope")}} repräsentiert, falls es sich um einen dedizierten Worker handelt (also einen Worker der nur von einem Skript genutzt wird, was der Standard ist.). Shared Workers benutzen das Objekt {{domxref("SharedWorkerGlobalScope")}}.
Man kann bis auf einige Ausnahmen beliebige Anweisungen ausführen. Beispielsweise kann man das DOM nicht direkt ändern und auch einige Standardmethoden und -attribute von {{domxref("window")}} können nicht genutzt werden. Viele andere Elemente von window können allerdings schon genutzt werden, unter anderem WebSockets und Datenspeicher, wie IndexedDB und die Firefox-OS-only Data Store API. Unter Functions and classes available to workers finden Sie mehr Details.
Daten werden zwischen den Workern und dem Hauptthread mithilfe eines Nachrichtensystems verschickt — beide Seiten verschicken ihre Nachrichten mit der postMessage() Methode und antworten mit dem onmessage Event Handler (die empfangene Nachricht ist im data Attribut {{event("Message")}} des Events enthalten). Die Daten werden kopiert und nicht geteilt.
Worker können neue Worker erzeugen, solange diese vom selben Ursprung gehosted werden wie die Ursprungsseite. Außerdem können Worker XMLHttpRequest für Netzwerk I/O benutzen mit der Ausnahme, dass die responseXML und channel Attribute von XMLHttpRequest stets null zurückgeben.
Neben dedizierten Workern gibt es noch andere Typen:
Note: As per the Web workers Spec, worker error events should not bubble (see {{bug(1188141)}}. This has been implemented in Firefox 42.
Worker ausgeführet wird.Sie finden ein paar einfache Beispiele, die die Benutzung veranschaulichen unter diesen Links:
Unter Using web workers finden Sie mehr Informationen wie diese Demos funktionieren.
| Specification | Status | Comment |
|---|---|---|
| {{SpecName('HTML WHATWG', '#workers')}} | {{Spec2('HTML WHATWG')}} |
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| Basic support | 4 | {{CompatVersionUnknown}} | {{CompatGeckoDesktop(1.9.1)}} | 10.0 | 10.6 | 4 |
| Shared workers | 4 | {{CompatNo}} | {{CompatGeckoDesktop(29)}} | {{CompatNo}} | 10.6 | 4 |
| Passing data using structured cloning | 13 | {{CompatVersionUnknown}} | {{CompatGeckoDesktop(8)}} | 10.0 | 11.5 | 6 |
| Passing data using transferable objects | 17 {{property_prefix("webkit")}} 21 |
{{CompatNo}} | {{CompatGeckoDesktop(18)}} | {{CompatNo}} | 15 | 6 |
| Global {{domxref("window.URL", "URL")}} | 10[1] 23 |
{{CompatVersionUnknown}} | {{CompatGeckoDesktop(21)}} | 11 | 15 | 6[1] |
| Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | Firefox OS (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|---|---|
| Basic support | 4.4 | 4 | {{CompatVersionUnknown}} | {{CompatGeckoMobile(1.9.1)}} | 1.0.1 | 10.0 | 11.5 | 5.1 |
| Shared workers | {{CompatNo}} | 4 | {{CompatNo}} | 29 | 1.4 | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
| Passing data using structured cloning | {{CompatNo}} | 4 | {{CompatVersionUnknown}} | 8 | 1.0.1 | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
| Passing data using transferable objects | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | 18 | 1.0.1 | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
[1] As webkitURL.