Information Technology Reference
In-Depth Information
mieren. Worker haben keinen Zugriff auf DOM-APIs, das window -Objekt und das
document -Objekt. Was im ersten Moment wie eine große Einschränkung aus-
sieht, erweist sich bei genauerer Betrachtung als sehr sinnvoll. Wenn parallel
laufende Scripts auf die gleichen Ressourcen zugreifen und diese verändern,
können sehr komplexe Situationen entstehen. Durch die strenge Isolation der
Worker und ihre Kommunikation über Nachrichten wird der JavaScript-Code
»sicherer«.
Der Start eines neuen Workers ist für das Betriebssystem relativ aufwendig,
und jeder Worker verbraucht mehr Speicherplatz als das Ausführen der glei-
chen Funktionen ohne Worker. Die Vorteile liegen aber trotzdem auf der Hand:
Der Browser bleibt reaktionsfähig, und komplizierte Berechnungen können
parallel ablaufen, was auf moderner Hardware für einen Geschwindigkeitsge-
winn sorgen kann.
Jedem Worker wird bei der Erzeugung das Script übergeben, das den Code für
den Worker enthält.
var w = new Worker("calc.js");
Das Script, in diesem Fall calc.js , enthält beliebigen JavaScript-Code, der
beim Aufruf des Workers ausgeführt wird. Optional enthält der Worker einen
Event-Handler für das message -Event, der auf Anfragen von dem aufrufenden
Script reagiert. In der Praxis wird der Worker auf diese Weise mit Daten zur
Berechnung versorgt und der Rechenvorgang angestoßen.
addEventListener('message', function(evt) {
// evt.data enthält die übergebenen Daten
Die Übergabe der Daten sowohl vom aufrufenden Script zum Worker als auch
umgekehrt erfolgt mithilfe der postMessage() -Funktion. Um den Worker w mit
Daten zu versorgen, eignet sich folgender Aufruf:
w.postMessage(imgData);
Dem postMessage() -Aufruf können dabei JavaScript-Objekte übergeben wer-
den, die der Browser intern in JSON-Strings konvertiert. Wichtig ist, dass diese
Daten bei jedem Aufruf kopiert werden, was bei großen Datenmengen zu einer
erheblichen Geschwindigkeitseinbuße führen kann.
Wie bereits erwähnt wurde, haben Workers keinen Zugriff auf das window -Ob-
jekt. Eine Ausnahme stellen aber die Funktionen des WindowTimers-Interface
dar: setTimeout() / clearTimeout() und setInterval() / clearInterval() können
Search WWH ::




Custom Search