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
-
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:
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).
Specifications
Specification | Status | Comment |
---|---|---|
HTML Living Standard The definition of 'Worker' in that specification. |
Padrão em tempo real | No change from Unknown. |
Unknown The definition of 'Worker' in that specification. |
Desconhecido | Initial definition. |
Compatibilidade com navegadores
BCD tables only load in the browser
Support varies for different types of workers. See each worker type's page for specifics.
See also
- Using web workers
- Functions available to workers
- Other kind of workers:
SharedWorker
and ServiceWorker (en-US). - Non-standard, Gecko-specific workers:
ChromeWorker
, used by extensions.