Web worker: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Note: fix |
Migliorato la pagina |
||
(6 versioni intermedie di 5 utenti non mostrate) | |||
Riga 1:
Un '''''web worker''''', come definito dal [[World Wide Web Consortium]] (W3C) e dal [[Web Hypertext Application Technology Working Group]] (WHATWG), è uno [[JavaScript|script JavaScript]] che viene eseguito in [[Esecuzione in background|background]] in una pagina [[HTML]] indipendentemente dagli script dell'interfaccia utente.<ref name="WHATWG">{{Cita pubblicazione|url=https://www.whatwg.org/specs/web-workers/current-work/|titolo=Web Workers|editore=[[Web Hypertext Application Technology Working Group|WHATWG]]|accesso=3 giugno 2010}}</ref> I
Il W3C e WHATWG considerano i ''web worker'' come script a esecuzione prolungata che non vengono interrotti dagli script dell'interfaccia utente (che rispondono ai clic o ad altre interazioni dell'utente). Il fatto di impedire a tali ''worker'' di essere interrotti dalle attività utente dovrebbe consentire alle pagine
Il W3C e il WHATWG sono attualmente nel processo di sviluppo della definizione di [[Application programming interface|API]] per i ''web worker''.<ref name="WHATWG" />
== Panoramica ==
Come concepiti da WHATWG, i ''web worker'' sono relativamente pesanti. Sono intesi per essere longevi, con un costo elevato in termini di prestazioni di avvio e un costo elevato di memoria per istanza.<ref name="WHATWG" /> Di conseguenza non dovrebbero essere utilizzati in grandi quantità, in quanto potrebbero monopolizzare le risorse di sistema.
I ''web worker'' consentono l'esecuzione dei [[Thread (informatica)|thread]] del [[browser]] in [[Concorrenza (informatica)|concorrenza]] a uno o più thread JavaScript in esecuzione in background. Normalmente il browser, che segue un singolo thread di esecuzione, deve attendere il completamento dell'esecuzione dei programmi JavaScript prima di procedere e ciò potrebbe richiedere del tempo significativo che il programmatore potrebbe voler nascondere all'utente. I ''web worker'' permettono al browser di continuare con le normali operazioni durante l'esecuzione in background dello script.
La specifica ''web worker'' è separata dalla specifica HTML5<ref name="into html5" /> e può essere utilizzata con HTML5.
Esistono due tipi di ''web worker'':<ref name="WHATWG" /> dedicati e condivisi.
Quando i ''web worker'' sono eseguiti in background non hanno accesso diretto al DOM ma comunicano con il documento tramite [[Comunicazione a scambio di messaggi|scambio di messaggi]]. Ciò consente l'esecuzione multi-thread dei programmi JavaScript.
== Caratteristiche ==
I
var worker = new Worker("worker_script.js");
</
worker.postMessage("Hello World!");
</
worker.onmessage = function(event) {
alert("Received message " + event.data);
Riga 33:
worker.terminate();
</
== Esempio ==
L'uso più semplice dei ''web worker'' è eseguire task computazionalmente costosi senza interrompere l'interfaccia utente.
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:<
<!DOCTYPE html>
<html>
Riga 47:
</head>
<body>
<p>
<script>
var worker = new Worker('worker.js');
Riga 56:
</body>
</html>
</
Il
var n = 1;
var end_value = 10**7;
Riga 65:
if (n % i == 0)
continue search;
//
postMessage(n);
}
</syntaxhighlight>
Per mandare un messaggio alla pagina quando un nuovo numero primo è stato trovato si utilizza il metodo <code>postMessage()</code>.
== Supporto ==
Il supporto dei browser per i ''web worker'' può essere controllato attraverso la proprietà
Il seguente codice di esempio controlla il supporto dei ''web worker'' su un browser:<
function browserSupportsWebWorkers() {
return typeof window.Worker === "function";
}
</
== Note ==
Riga 86:
== Collegamenti esterni ==
* [https://dev.w3.org/html5/workers/ Web Workers – W3C] {{Webarchive|url=https://web.archive.org/web/20150607035929/http://dev.w3.org/html5/workers/ |date=7 giugno 2015 }}
* [https://www.whatwg.org/specs/web-workers/current-work/ Web Workers – WHATWG]
* [https://developer.mozilla.org/en/Using_web_workers Using Web Workers] {{Webarchive|url=https://web.archive.org/web/20120507130436/https://developer.mozilla.org/en/Using_web_workers |date=7 maggio 2012 }} – Mozilla Developer Network
{{Interfacce web}}
{{portale|informatica|internet}}
[[Categoria:Sviluppo web]]
|