Java Reference
In-Depth Information
sehr ot. Vollkommen analog implementieren wir mit onerror eine Fehlerreaktion. Solch
ein Fehlereignis hat drei interessante Eigenschaten. In message steht eine lesbare Be -
schreibung des Fehlers, in ilename der Name des Skripts mit dem Fehler und in lineno die
Zeilennummer, wo der Fehler aufgetreten ist.
PrAXISTIPP: Statt mit onmessage können Sie zur Registrierung eines Callback
auch mit addEventListener() für das Event message oder das Event error
arbeiten. Das ist gleichwertig. Beispiel:
Listing 14.5■ Callback mit addEventListener()
thread1.addEventListener('message', function(ev) {
...
}, false);
Bei der Ereignisbehandlung für den Klick auf die zweite Schaltläche sehen Sie die Beendi-
gung des Hintergrundprozesses über die Methode terminate() . Da der Web Worker in
einer globalen Variablen thread referenziert wird, können sie darüber auf den Web Worker
zugreifen.
Die Reaktion auf die dritte Schaltläche erlaubt die Entgegennahme einer Benutzereingabe
über die Methode prompt() . Diese ist zwar in der Praxis mittlerweile obsolet, zeigt aber in
diesem Beispiel ziemlich deutlich, dass der Hintergrundprozess auch weiterläut, wenn ein
modales Fenster die normale Interaktion mit der Webseite anhält.
Hier ist das Listing des Quellcodes hintergrundarbeit1.js , der die Funktionalität des Web
Workers beschreibt:
Listing 14.6■ Der eigentliche Worker-Prozess
var i = 0;
var zufall = 0;
while (true) {
i++;
zufall = Math.random();
postMessage( "Schritt " + i + ", Wert der Zufallszahl: " + zufall ) ;
if (i > 100000) {
postMessage("Fertig") ;
break;
}
}
Das Skript macht nicht viel Spannendes. In einem Zufallsprozess werden Zahlen ermittelt
und das Skript abgebrochen, wenn ein Counter größer als 100000 ist. Die einzig interessan-
ten Stellen sind die mit Rückgabe einer Meldung an den Aufrufer des Web Workers mit
postMessage() . Diese Meldung an den Aufrufer des Web Workers beendet den Hinter-
grundprozess nicht.
HInWEIS: Beachten Sie, dass Sie während der Arbeit des Web Worker natür-
lich nicht permanent Meldungen zurückgeben müssen, ganz im Gegenteil. Nur
zeigt diese permanente Ausgabe in dem Beispiel deutlich, wie der Web Worker
Search WWH ::




Custom Search