Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
ECMAScript 5 09 <h1>Web Worker</h1> 10 <div id="ausgabe"></div> 11 </body> 12 <script type="text/javascript"> 13 var malocher = new Worker('./hintergrundarbeit.js'); 14 malocher.onmessage = function(ev){ 15 document.getElementById("ausgabe").innerHTML=ev.data; 16 } 17 </script> 18 </html> Listing 17.27: Aufruf eines Web Worker Wie beschrieben wird in Zeile 13 ein Worker -Objekt erzeugt. In Zeile 14 bis 16 wird eine anonyme Funktion mit onmessage bei diesem Objekt registriert, die die vom Web Worker zurückgegebenen Daten in der Webseite anzeigt. Hier ist das Listing des Quellcodes hintergrundarbeit.js, der die Funktionalität des Web Worker beschreibt: 01 var i = 0; 02 while(true) { 03 i++; 04 var zufall = Math.random(); 05 if (zufall > 0.9) { 06 postMessage("Anzahl Ziehungen bis Zufallszahl > 0.9: " 07 + i + ", Wert der Zufallszahl: " + zufall); 08 break; 09 } 10 } Listing 17.28: Der Code des Web Worker Das Skript macht nicht viel Spannendes. In einem Zufallsprozess werden Zahlen er- mittelt und das Skript abgebrochen, wenn die Zahl größer als 0.9 ist. Die Anzahl der Schleifendurchläufe wird überwacht. Die einzig interessante Stelle ist die Rückgabe ei- ner Meldung an den Aufrufer des Web Worker in den Zeilen 6 und 7 mit postMessage() , bevor das Skript beendet wird. Abbildung 17.14: Ein Hintergrundprozess hat die Werte ermittelt. 661