Esercitazione JS

JS CASA JS Introduzione JS Dove si va Uscita JS Dichiarazioni JS Sintassi JS Commenti JS Variabili JS JS Let JS Cost Operatori JS JS aritmetica Assegnazione JS Tipi di dati JS Funzioni JS Oggetti JS Eventi JS Corde JS Metodi di stringa JS Ricerca di stringhe JS Modelli di stringhe JS Numeri JS Metodi numerici JS Matrici JS Metodi array JS Ordinamento matrice JS Iterazione dell'array JS Cost. array JS Date JS Formati data JS Metodi di acquisizione della data JS Metodi di impostazione della data JS JS matematica JS Casuale JS booleani Confronti JS Condizioni JS JS Switch Ciclo JS per JS Loop per In Ciclo JS per di JS Loop mentre JS Break Iterabili JS Insiemi JS Mappe JS Tipo JS Conversione del tipo JS JS bit a bit JS RegExp Errori JS Ambito JS JS sollevamento Modalità rigorosa JS JS questa parola chiave Funzione freccia JS Classi JS JS JSON Debug JS Guida allo stile JS Migliori Pratiche JS Errori di JS Prestazioni JS Parole riservate JS

Versioni JS

Versioni JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Storia di JS

Oggetti JS

Definizioni di oggetti Proprietà dell'oggetto Metodi dell'oggetto Visualizzazione di oggetti Accessori per oggetti Costruttori di oggetti Prototipi di oggetti Iterabili di oggetti Insiemi di oggetti Mappe degli oggetti Riferimento all'oggetto

Funzioni JS

Definizioni delle funzioni Parametri di funzione Invocazione di funzione Chiamata di funzione Funzione Applica Chiusure di funzioni

Classi JS

Introduzione alla classe Eredità di classe Classe statica

JS Async

Richiamate JS JS asincrono JS Promesse JS Async/Attendere

JS HTML DOM

DOM Introduzione Metodi DOM Documento DOM Elementi DOM DOM HTML Moduli DOM DOM CSS Animazioni DOM Eventi DOM Ascoltatore di eventi DOM Navigazione DOM Nodi DOM Collezioni DOM Elenchi di nodi DOM

Distinta base del browser JS

Finestra JS Schermo JS Posizione JS Storia di JS Navigatore JS Avviso popup JS JS tempismo Biscotti JS

API Web JS

Introduzione all'API Web API dei moduli Web API Cronologia web API di archiviazione Web API Web Worker API di recupero Web API di geolocalizzazione web

JS AJAX

Introduzione all'Ajax AJAX XMLHttp Richiesta AJAX Risposta dell'AJAX File XML AJAX AJAX PHP AJAX ASP Database AJAX Applicazioni AJAX Esempi AJAX

JS JSON

Introduzione JSON Sintassi JSON JSON contro XML Tipi di dati JSON Analisi JSON JSON Stringify Oggetti JSON Matrici JSON Server JSON JSON PHP JSON HTML JSON JSONP

JS vs jQuery

Selettori jQuery jQuery HTML jQuery CSS jQuery DOM

Grafica JS

Grafica JS Tela JS JS Plotly JS Chart.js Grafico di Google JS JS D3.js

Esempi JS

Esempi JS JS HTML DOM Input HTML JS Oggetti HTML JS Eventi HTML JS Browser JS Editore JS Esercizi JS Quiz J.S Certificato JS

Riferimenti JS

Oggetti JavaScript Oggetti HTML DOM


API Web Workers


Un web worker è un JavaScript in esecuzione in background, senza influire sulle prestazioni della pagina.


Che cos'è un Web Worker?

Quando si eseguono script in una pagina HTML, la pagina non risponde fino al termine dello script.

Un web worker è un JavaScript che viene eseguito in background, indipendentemente da altri script, senza influire sulle prestazioni della pagina. Puoi continuare a fare quello che vuoi: fare clic, selezionare cose, ecc., mentre il web worker viene eseguito in background.

Supporto browser

I numeri nella tabella specificano le prime versioni del browser che supportano completamente i Web Worker:

Chrome 4 IE 10 Firefox 3.5 Safari 4 Opera 11.5
Jan 2010 Sep 2012 Jun 2009 Jun 2009 Jun 2011

Esempio di Web Worker

L'esempio seguente crea un semplice web worker che conta i numeri in background:

Esempio

Count numbers:


Controlla il supporto per i webworker

Prima di creare un web worker, verifica se il browser dell'utente lo supporta:

if (typeof(Worker) !== "undefined") {
  // Yes! Web worker support!
  // Some code.....
} else {
  // Sorry! No Web Worker support..
}


Crea un file di lavoro Web

Ora creiamo il nostro web worker in un JavaScript esterno.

Qui creiamo uno script che conta. Lo script è archiviato nel file "demo_workers.js":

let i = 0;

function timedCount() {
  i ++;
  postMessage(i);
  setTimeout("timedCount()",500);
}

timedCount();

La parte importante del codice sopra è il postMessage()metodo, che viene utilizzato per inviare un messaggio alla pagina HTML.

Nota: normalmente i web worker non vengono utilizzati per script così semplici, ma per attività che richiedono più CPU.


Crea un oggetto Web Worker

Ora che abbiamo il file di lavoro web, dobbiamo chiamarlo da una pagina HTML.

Le righe seguenti controllano se il lavoratore esiste già, in caso contrario, crea un nuovo oggetto web worker ed esegue il codice in "demo_workers.js":

if (typeof(w) == "undefined") {
  w = new Worker("demo_workers.js");
}

Quindi possiamo inviare e ricevere messaggi dal web worker.

Aggiungi un listener di eventi "onmessage" al web worker.

w.onmessage = function(event){
  document.getElementById("result").innerHTML = event.data;
};

Quando il web worker pubblica un messaggio, il codice all'interno del listener di eventi viene eseguito. I dati del web worker vengono archiviati in event.data.


Termina un Web Worker

Quando un oggetto Web worker viene creato, continuerà ad ascoltare i messaggi (anche dopo che lo script esterno è terminato) fino alla sua chiusura.

Per terminare un web worker e liberare risorse del browser/computer, utilizzare il terminate()metodo:

w.terminate();

Riutilizza il Web Worker

Se imposti la variabile di lavoro su undefined, dopo che è stata terminata, puoi riutilizzare il codice:

w = undefined;

Codice di esempio di Web worker completo

Abbiamo già visto il codice Worker nel file .js. Di seguito è riportato il codice per la pagina HTML:

Esempio

<!DOCTYPE html>
<html>
<body>

<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>

<script>
let w;

function startWorker() {
  if (typeof(w) == "undefined") {
    w = new Worker("demo_workers.js");
  }
  w.onmessage = function(event) {
    document.getElementById("result").innerHTML = event.data;
  };
}

function stopWorker() {
  w.terminate();
  w = undefined;
}
</script>

</body>
</html>

I Web Workers e il DOM

Poiché i web worker si trovano in file esterni, non hanno accesso ai seguenti oggetti JavaScript:

  • L'oggetto finestra
  • L'oggetto del documento
  • L'oggetto genitore