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 um ErrorEvent (en-US) do tipo error é passado através do worker. Este é herdado pelo AbstractWorker (en-US).

Worker.onmessage (en-US)

Um EventListener é chamado sempre quando um MessageEvent (en-US) do tipo message é passado através do worker — ou seja, quando uma mensagem é enviada para o documento pai do worker via DedicatedWorkerGlobalScope.postMessage (en-US). A mensagem é armazenada na propriedade de dados do evento data (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 via onrejectionhandled.

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 eventos onunhandledrejection.

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