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 (en-US) 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
Worker()
(en-US)-
Cria um worker dedicado da web que executa o script especificado na URL. Workers também podem ser construídos usando Blobs.
Propriedades
Herda as propriedades do pai, EventTarget
, e implementa as propriedades que compõem o AbstractWorker
(en-US).
Manipuladores de Eventos
AbstractWorker.onerror
(en-US)-
Um
EventListener
é chamado sempre quando umErrorEvent
(en-US) do tipoerror
é passado através do worker. Este é herdado peloAbstractWorker
(en-US). Worker.onmessage
(en-US)-
Um
EventListener
é chamado sempre quando umMessageEvent
(en-US) do tipomessage
é passado através do worker — ou seja, quando uma mensagem é enviada para o documento pai do worker viaDedicatedWorkerGlobalScope.postMessage
(en-US). A mensagem é armazenada na propriedade de dados do eventodata
(en-US).
Métodos
Os métodos são herdados de seu pai. EventTarget
, e implementa os métodos de AbstractWorker
(en-US).
Worker.postMessage()
(en-US)-
Envia uma mensagem — qual pode consistir de qualquer objeto do JavaScript — para o escopo interno do worker.
Worker.terminate()
(en-US)-
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
(en-US)-
O evento é disparado quando o script pai do worker recebe uma mensagem do mesmo. Também é disponibilizado via
onmessage.
messageerror
(en-US)-
Dispara quando um Worker recebe uma mensagem que não pode ser deserializada (en-US) Também é disponibilizado via
onmessageerror.
rejectionhandled
(en-US)-
Dispara sempre que um
Promise
é rejeitado, indenpendentemente de haver ou não um manipulador para capturar sua rejeição. Também é disponibilizado viaonrejectionhandled.
unhandledrejection
(en-US)-
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()
(en-US) constructor and usage of the object:
js
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
(en-US) and ServiceWorker (en-US). - Non-standard, Gecko-specific workers:
ChromeWorker
, used by extensions.