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