Worker
A interface Worker da API do Web Worker representa uma tarefa em background (segundo plano) que pode ser facilmente criada e emitir mensagens de volta ao seu criador. Criar um worker é possível chamando o construtor Worker("path/to/worker/script")
e especificando um script para ser executado em sua própria thread.
Um worker pode, por sua vez, gerar outros workers, contanto que estes estejam hospedados na mesma origem da página principal (Nota: workers aninhados não estão atualmente implementados no Blink). Além disso, workers podem utilizar XMLHttpRequest para E/S de rede, desde que seja estipulado que os atributos responseXML
e channel
em XMLHttpRequest
retornem sempre null
.
Não são todas as interfaces e funções que estão disponíveis para o script associado a um Worker
.
Nota: No Firefox, se você deseja utilizar workers em extensões e gostaria de ter acesso a js-ctypes, você deveria utilizar o objeto ChromeWorker
.
Construtores
Propriedades
Herda as propriedades do pai, EventTarget
, e implementa as propriedades que compõem o AbstractWorker
.
Manipuladores de Eventos
AbstractWorker.onerror
-
Um
EventListener
é chamado sempre quando umErrorEvent
do tipoerror
é passado através do worker. Este é herdado peloAbstractWorker
. Worker.onmessage
-
Um
EventListener
é chamado sempre quando umMessageEvent
do tipomessage
é passado através do worker — ou seja, quando uma mensagem é enviada para o documento pai do worker viaDedicatedWorkerGlobalScope.postMessage
. A mensagem é armazenada na propriedade de dados do eventodata
.
Métodos
Os métodos são herdados de seu pai. EventTarget
, e implementa os métodos de AbstractWorker
.
Worker.postMessage()
-
Envia uma mensagem — qual pode consistir de qualquer objeto do JavaScript — para o escopo interno do worker.
Worker.terminate()
-
Imediatamente encerra o worker. Isso não oferece ao worker a oportunidade de concluir suas operações; imediatamente o interrompe.
ServiceWorker
não suportam esse método.
Eventos
message
-
O evento é disparado quando o script pai do worker recebe uma mensagem do mesmo. Também é disponibilizado via
onmessage.
messageerror
-
Dispara quando um Worker recebe uma mensagem que não pode ser deserializada Também é disponibilizado via
onmessageerror.
rejectionhandled
-
Dispara sempre que um
Promise
é rejeitado, indenpendentemente de haver ou não um manipulador para capturar sua rejeição. Também é disponibilizado viaonrejectionhandled.
unhandledrejection
-
Dispara sempre que um
Promise
rejeita, independentemente de haver ou não um manipulador para capturar a rejeição. Também disponível por meio da propriedade do manipulador de eventosonunhandledrejection.
Exemplos
The following code snippet shows creation of a Worker
object using the Worker()
constructor and usage of the object:
var myWorker = new Worker("worker.js");
var first = document.querySelector("#number1");
var second = document.querySelector("input#number2");
first.onchange = function () {
myWorker.postMessage([first.value, second.value]);
console.log("Message posted to worker");
};
For a full example, see ourBasic dedicated worker example (run dedicated worker).
Especificações
Specification |
---|
HTML Standard # dedicated-workers-and-the-worker-interface |
Compatibilidade com navegadores
BCD tables only load in the browser
See also
- Using web workers
- Functions available to workers
- Other kind of workers:
SharedWorker
and ServiceWorker. - Non-standard, Gecko-specific workers:
ChromeWorker
, used by extensions.