Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Web worker - Teknopedia
Web worker - Teknopedia

Un web worker, come definito dal World Wide Web Consortium (W3C) e dal Web Hypertext Application Technology Working Group (WHATWG), è uno script JavaScript che viene eseguito in background in una pagina HTML indipendentemente dagli script dell'interfaccia utente.[1] I web worker sono spesso in grado di utilizzare le CPU multi-core in modo più efficiente.[2]

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 web di rimanere reattive mentre eseguono attività lunghe in background.

Il W3C e il WHATWG sono attualmente nel processo di sviluppo della definizione di API per i web worker.[1]

Panoramica

[modifica | modifica wikitesto]

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.[1] 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 del browser in 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[3] e può essere utilizzata con HTML5.

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

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

Caratteristiche

[modifica | modifica wikitesto]

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.

var worker = new Worker("worker_script.js");

Per inviare un messaggio al worker si usa il metodo postMessage dell'oggetto worker, come mostrato nell'esempio successivo.

worker.postMessage("Hello World!");

La proprietà onmessage usa un event handler per recuperare informazioni da un worker.

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

worker.terminate();

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

[modifica | modifica wikitesto]

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>
 <head>
  <title>Worker example: One-core computation</title>
 </head>
 <body>
  <p>il più grande numero primo calcolato finora è: <output id="result"></output></p>
  <script>
   var worker = new Worker('worker.js');
   worker.onmessage = function (event) {
     document.getElementById('result').textContent = event.data;
   };
  </script>
 </body>
</html>

La chiamata al costruttore Worker() crea un web worker e ritorna un oggetto worker , il quale è usato per comunicare con il web worker. L'event handler onmessage dell'oggetto permette al codice di ricevere messaggi dal web worker. Il codice del web worker, contenuto nel file worker.js, è il seguente:

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

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

Supporto

[modifica | modifica wikitesto]

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

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

function browserSupportsWebWorkers() {
  return typeof window.Worker === "function";
}

I web worker sono attualmente supportati da Chrome, Opera, Internet Explorer 10, Mozilla Firefox e Safari.[3][5] 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.[6][7]

Note

[modifica | modifica wikitesto]
  1. ^ a b c d Web Workers, WHATWG. URL consultato il 3 giugno 2010.
  2. ^ HTML Living Standard, su Html.spec.whatwg.org, 30 gennaio 2017. URL consultato il 31 gennaio 2017.
  3. ^ a b "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, su isogenicengine.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, su caniuse.com. URL consultato il 10 giugno 2017.

Collegamenti esterni

[modifica | modifica wikitesto]
  • Web Workers – W3C Archiviato il 7 giugno 2015 in Internet Archive.
  • Web Workers – WHATWG, su whatwg.org.
  • Using Web Workers Archiviato il 7 maggio 2012 in Internet Archive. – Mozilla Developer Network
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
API browserC NPAPI (LiveConnect · XPConnect · C NPRuntime) · C PPAPI (NaCl) · ActiveX · BHO · XBAP
API web
W3CAudio · Canvas · CORS · DOM · DOM events · EME · File · Font Geolocation · 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 1.0 · Web 2.0 · Open Web Platform · Rich Internet application · Applicazione web
  Portale Informatica
  Portale Internet
Estratto da "https://it.wikipedia.org/w/index.php?title=Web_worker&oldid=147738453"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022