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 with JavaScript enabled. Enable JavaScript to view data.

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.