Web worker: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Note: fix
ValterVBot (discussione | contributi)
m tag source deprecati, replaced: <source lang= → <syntaxhighlight lang= (6), </source> → </syntaxhighlight> (6)
Riga 17:
 
== Caratteristiche ==
I Web worker interagiscono con il documento principale tramite il passaggio di messaggi. Il codice seguente crea un worker che eseguirà il codice JavaScript nel file specificato.<sourcesyntaxhighlight lang="javascript">
var worker = new Worker("worker_script.js");
</sourcesyntaxhighlight>Per inviare un messaggio al worker si usa il metodo <code>postMessage</code> dell'oggetto worker, come mostrato nell'esempio successivo.<sourcesyntaxhighlight lang="javascript">
worker.postMessage("Hello World!");
</sourcesyntaxhighlight>La proprietà <code>onmessage</code> usa un event handler per recuperare informazioni da un worker.<sourcesyntaxhighlight lang="javascript">
worker.onmessage = function(event) {
alert("Received message " + event.data);
Riga 33:
 
worker.terminate();
</sourcesyntaxhighlight>Una volta che un worker è terminato diventa fuori portata e la variabile che fa riferimento diventa undefined; a questo punto è necessario creare un nuovo worker, se necessario.
 
== Esempio ==
Riga 40:
In questo esempio, il documento principale crea un web worker per computare numeri primi e li mostra progressivamente l'ultimo numero primo trovato.
 
La pagina principale come segue:<sourcesyntaxhighlight lang="html4strict">
<!DOCTYPE html>
<html>
Riga 56:
</body>
</html>
</sourcesyntaxhighlight>La chiamata al costruttore <code>Worker()</code> crea un web worker e ritorna un oggetto <code>worker</code> , il quale è usato per comunicare con il web worker. L'event handler <code>onmessage</code> dell'oggetto permette al codice di ricevere messaggi dal web worker.
Il Web Worker stesso è il seguente:<sourcesyntaxhighlight lang="javascript">
var n = 1;
var end_value = 10**7;
Riga 68:
postMessage(n);
}
</syntaxhighlight>
</source>
 
Per mandare un messaggio alla pagina quando un nuovo numero primo è stato trovato si utilizza il metodo <code>postMessage()</code>.
Riga 75:
Il supporto dei browser per i web worker può essere controllato attraverso la proprietà Worker sull'oggetto globale window,<ref>"HTML5 Up and Running" Mark Pilgrim. O'Reilly/Google Press. August 2010</ref> la quale sarà undefined se il browser non li supporta.
 
Il seguente codice di esempio controlla il supporto dei web worker su un browser:<sourcesyntaxhighlight lang="javascript">
function browserSupportsWebWorkers() {
return typeof window.Worker === "function";
}
</sourcesyntaxhighlight>I web worker sono attualmente supportati da [[Google Chrome|Chrome]], [[Opera (browser)|Opera]], [[Internet Explorer]] (versione 10), [[Mozilla Firefox]] e [[Safari (browser)|Safari]].<ref name="into html5">"Introducing HTML5", Lawson, B. and Sharp, R., 2011.</ref><ref>"HTML5 and CSS3" Brian P. Hogan. The Pragmatic Programmers, LLC 2010.</ref> Mobile Safari per iOS supporta i web worker da [[iOS]] 5. Il browser [[Android]] ha iniziato a supportarli in Android 2.1, ma il supporto è stato rimosso nelle versioni Android 2.2-4.3 prima di essere ripristinato in Android 4.4.<ref>{{Cita web|url=http://www.isogenicengine.com/2010/10/25/spotlight-benchmarking-android-2-1-with-web-workers/#|titolo=Archived copy|accesso=10 luglio 2011|urlarchivio=https://web.archive.org/web/20131019092816/http://www.isogenicengine.com/2010/10/25/spotlight-benchmarking-android-2-1-with-web-workers/#|dataarchivio=19 ottobre 2013|urlmorto=sì}}</ref><ref>{{Cita web|url=https://caniuse.com/#search=worker|titolo=Can I use... Support tables for HTML5, CSS3, etc|sito=caniuse.com|accesso=10 giugno 2017}}</ref>
 
== Note ==