Movatterモバイル変換


[0]ホーム

URL:


Vai al contenuto
WikipediaL'enciclopedia libera
Ricerca

Web worker

Da Wikipedia, l'enciclopedia libera.

Unweb worker, come definito dalWorld Wide Web Consortium (W3C) e dalWeb Hypertext Application Technology Working Group (WHATWG), è unoscript JavaScript che viene eseguito inbackground in una paginaHTML indipendentemente dagli script dell'interfaccia utente.[1] Iweb worker sono spesso in grado di utilizzare leCPU multi-core in modo più efficiente.[2]

Il W3C e WHATWG considerano iweb 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 taliworker di essere interrotti dalle attività utente dovrebbe consentire alle pagine web di rimanere reattive mentre eseguono attività lunghe in background.

Il W3C e il WHATWG sono attualmente nel processo di sviluppo della definizione diAPI per iweb worker.[1]

Panoramica

[modifica |modifica wikitesto]

Come concepiti da WHATWG, iweb 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.[1] Di conseguenza non dovrebbero essere utilizzati in grandi quantità, in quanto potrebbero monopolizzare le risorse di sistema.

Iweb worker consentono l'esecuzione deithread delbrowser inconcorrenza 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. Iweb worker permettono al browser di continuare con le normali operazioni durante l'esecuzione in background dello script.

La specificaweb worker è separata dalla specifica HTML5[3] e può essere utilizzata con HTML5.

Esistono due tipi diweb worker:[1] dedicati e condivisi.

Quando iweb worker sono eseguiti in background non hanno accesso diretto al DOM ma comunicano con il documento tramitescambio di messaggi. Ciò consente l'esecuzione multi-thread dei programmi JavaScript.

Caratteristiche

[modifica |modifica wikitesto]

Iweb worker interagiscono con il documento principale tramite il passaggio di messaggi. Il codice seguente crea unworker che eseguirà il codice JavaScript nel file specificato.

varworker=newWorker("worker_script.js");

Per inviare un messaggio alworker si usa il metodopostMessage dell'oggettoworker, come mostrato nell'esempio successivo.

worker.postMessage("Hello World!");

La proprietàonmessage usa unevent handler per recuperare informazioni da unworker.

worker.onmessage=function(event){alert("Received message "+event.data);doSomething();}functiondoSomething(){//do workworker.postMessage("Work done!");}worker.terminate();

Una volta che un worker è terminato diventa fuori portata e la variabile che fa riferimento diventaundefined; a questo punto è necessario creare un nuovo worker, se necessario.

Esempio

[modifica |modifica wikitesto]

L'uso più semplice deiweb worker è eseguire task computazionalmente costosi senza interrompere l'interfaccia utente.

In questo esempio, il documento principale crea unweb worker per computare numeri primi e li mostra progressivamente l'ultimo numero primo trovato.

La pagina principale come segue:

<!DOCTYPE html><html><head><title>Worker example: One-core computation</title></head><body><p>il più grande numero primo calcolato finora è:<outputid="result"></output></p><script>varworker=newWorker('worker.js');worker.onmessage=function(event){document.getElementById('result').textContent=event.data;};</script></body></html>

La chiamata al costruttoreWorker() crea unweb worker e ritorna un oggettoworker , il quale è usato per comunicare con ilweb worker. L'event handleronmessage dell'oggetto permette al codice di ricevere messaggi dalweb worker.Il codice delweb worker, contenuto nel fileworker.js, è il seguente:

varn=1;varend_value=10**7;search:while(n<=end_value){n++;for(vari=2;i<=Math.sqrt(n);i++)if(n%i==0)continuesearch;// trovato un numero primo!postMessage(n);}

Per mandare un messaggio alla pagina quando un nuovo numero primo è stato trovato si utilizza il metodopostMessage().

Supporto

[modifica |modifica wikitesto]

Il supporto dei browser per iweb worker può essere controllato attraverso la proprietàworker sull'oggetto globalewindow,[4] la quale saràundefined se il browser non li supporta.

Il seguente codice di esempio controlla il supporto deiweb worker su un browser:

functionbrowserSupportsWebWorkers(){returntypeofwindow.Worker==="function";}

Iweb worker sono attualmente supportati daChrome,Opera,Internet Explorer 10,Mozilla Firefox eSafari.[3][5]Safari periOS supporta iweb worker da iOS 5. Il browserAndroid ha iniziato a supportarli inAndroid 2.1, ma il supporto è stato rimosso nelle versioniAndroid 2.24.3 prima di essere ripristinato inAndroid 4.4.[6][7]

Note

[modifica |modifica wikitesto]
  1. ^abcdWeb Workers,WHATWG.URL consultato il 3 giugno 2010.
  2. ^HTML Living Standard, suHtml.spec.whatwg.org, 30 gennaio 2017.URL consultato il 31 gennaio 2017.
  3. ^ab"Introducing HTML5", Lawson, B. and Sharp, R., 2011.
  4. ^"HTML5 Up and Running" Mark Pilgrim. O'Reilly/Google Press. August 2010
  5. ^"HTML5 and CSS3" Brian P. Hogan. The Pragmatic Programmers, LLC 2010.
  6. ^Archived copy, suisogenicengine.com.URL consultato il 10 luglio 2011(archiviato dall'url originale il 19 ottobre 2013).
  7. ^Can I use... Support tables for HTML5, CSS3, etc, sucaniuse.com.URL consultato il 10 giugno 2017.

Collegamenti esterni

[modifica |modifica wikitesto]
V · D · M
Interfacce web
Lato server
ProtocolliHTTP ·CGI ·SCGI ·FCGI ·AJP ·WSRP ·WebSocket
API ServerC NSAPI ·C ASAPI ·C ISAPI ·COM ASP ·Java servlet ·container ·CLI OWIN ·ASP.NET Handler ·Python WSGI ·Ruby Rack ·JavaScript JSGI ·Perl PSGI ·Lua WSAPI ·Portlet
ArgomentiWeb service ·Open API ·Webhook ·Application server
Lato client
APIbrowserC NPAPI (LiveConnect ·XPConnect ·C NPRuntime) ·C PPAPI (NaCl) ·ActiveX ·BHO ·XBAP
API web
W3CAudio ·Canvas ·CORS ·DOM ·DOM events ·EME ·File ·FontGeolocation ·IndexedDB ·MSE ·SSE ·SVG ·Video ·WebRTC ·WebSocket ·Web messaging ·Web storage ·Web worker ·XMLHttpRequest ·WebAssembly
KhronosWebCL ·WebGL
AltriGoogle Gears ·Web SQL Database (formerly W3C) ·WebUSB
ArgomentiAJAX vs.DHTML ·Mashup ·Web IDL ·Scripting
ArgomentiWeb statico ·Web dinamico ·Open Web Platform ·Rich Internet application ·Applicazione web
Estratto da "https://it.wikipedia.org/w/index.php?title=Web_worker&oldid=143708791"
Categoria:
Categorie nascoste:

[8]ページ先頭

©2009-2025 Movatter.jp