--- title: Worker slug: Web/API/Worker translation_of: Web/API/Worker ---

{{APIRef("Web Workers API")}}

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.

No Firefox, se você deseja utilizar workers em extensões e gostaria de ter acesso a js-ctypes, você deveria utilizar o objeto {{ domxref("ChromeWorker") }} .

Construtores

{{domxref("Worker.Worker", "Worker()")}}
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, {{domxref("EventTarget")}}, e implementa as propriedades que compõem o {{domxref("AbstractWorker")}}.

Manipuladores de Eventos

{{domxref("AbstractWorker.onerror")}}
Um {{ domxref("EventListener") }} é chamado sempre quando um {{domxref("ErrorEvent")}} do tipo error é passado através do worker. Este é herdado pelo {{domxref("AbstractWorker")}}.
{{domxref("Worker.onmessage")}}
Um {{ domxref("EventListener") }} é chamado sempre quando um {{domxref("MessageEvent")}} do tipo message é passado através do worker — ou seja, quando uma mensagem é enviada para o documento pai do worker via {{domxref("DedicatedWorkerGlobalScope.postMessage")}}. A mensagem é armazenada na propriedade de dados do evento {{domxref("MessageEvent.data", "data")}}.

Métodos

Os métodos são herdados de seu pai. {{domxref("EventTarget")}}, e implementa os métodos de {{domxref("AbstractWorker")}}.

{{domxref("Worker.postMessage()")}}
Envia uma mensagem — qual pode consistir de qualquer objeto do JavaScript — para o escopo interno do worker.
{{domxref("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 {{jsxref("Promise")}} é rejeitado, indenpendentemente de haver ou não um manipulador para capturar sua rejeição.
Também é disponibilizado via onrejectionhandled.
unhandledrejection
Dispara sempre que um {{jsxref ("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 {{domxref("Worker")}} object using the {{domxref("Worker.Worker", "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).

Specifications

Specification Status Comment
{{SpecName('HTML WHATWG', "#worker", "Worker")}} {{Spec2('HTML WHATWG')}} No change from {{SpecName("Web Workers")}}.
{{SpecName('Web Workers', "#worker", "Worker")}} {{Spec2('Web Workers')}} Initial definition.

Browser compatibility

Support varies for different types of workers. See each worker type's page for specifics.

{{CompatibilityTable}}
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 4 3.5 10.0 10.6 4
Feature Android Firefox Mobile (Gecko) Firefox OS (Gecko) IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support 4.4 3.5 1.0.1 10.0 11.5 5.1 {{CompatUnknown}}

See also