--- title: Worker slug: Web/API/Worker tags: - API - DOM translation_of: Web/API/Worker ---
{{APIRef("Web Workers API")}}
L'interfaccia Worker
delle Web Workers API rappresenta un processo in background che può essere facilmente generato e in grado di inviare messaggi al creatore. Per creare un worker basta specificare nel metodo costruttore Worker()
lo script che sarà incaricato di eseguire.
I Workers saranno poi in grado di inizializzare ulteriori workers fintanto che questi workers hanno la stessa origine della pagina su cui sono ospitati (NB: l'annidamento di workers non è ancora implementato in Blink). I workers possono tuttavia usare XMLHttpRequest
per richiamare risorse esterne, a patto che gli attributi responseXML
e channel
di XMLHttpRequest
restituiscano null
.
Non tutte le interfacce nè i metodi sono disponibili nel contesto dello script interpretato da un Worker
.
Se si vuole utilizzare i workers nelle estensioni per Firefox ed avere accesso a js-ctypes, bisogna utilizzare l'interfaccia {{ domxref("ChromeWorker") }}.
Eredita proprietà dal suo parent, {{domxref("EventTarget")}}, e implementa quelle di {{domxref("AbstractWorker")}}.
error
arriva al worker. Questo evento è ereditato da {{domxref("AbstractWorker")}}.message
arriva al worker — Per esempio quando un messaggio viene inviato al documento parent da un worker tramite {{domxref("DedicatedWorkerGlobalScope.postMessage")}}. Il messaggio viene salvato nella proprietà {{domxref("MessageEvent.data", "data")}} dell'evento.Eredita i metodi del suo parent, {{domxref("EventTarget")}}, e quelli di {{domxref("AbstractWorker")}}.
any
JavaScript object) al contesto interno del worker.Il codice che segue mostra la creazione di un oggetto {{domxref("Worker")}} usando il costruttore {{domxref("Worker.Worker", "Worker()")}} e l'invio di un messaggio:
var myWorker = new Worker('worker.js'); var first = document.querySelector('#number1'); var second = document.querySelector('#number2'); first.onchange = function() { myWorker.postMessage([first.value,second.value]); console.log('Messaggio inviato al worker'); }
Per un esempio completo: Esempio worker ( esegui worker).
Specification | Status | Comment |
---|---|---|
{{SpecName('HTML WHATWG', "#worker", "Worker")}} | {{Spec2('HTML WHATWG')}} |
Il supporto dipende per ciascun tipo di worker. Controlla le pagine dei singoli worker per avere maggiori dettagli.
{{Compat("api.Worker")}}
Nelle prime implementazioni browser caricare uno script cross-origin per un worker causava un errore SecurityError
; nelle implementazioni piu' recenti invece viene generato un evento {{event("error")}} per rispettare le specifiche. Puoi trovare maggiori informazioni su come gestire queste situazioni qui: Loading cross-origin worker now fires error event instead of throwing; worker in sandboxed iframe no longer allowed.