aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/web/api/worker/index.html
blob: 2a734671331434780a2c9581ed576254996dd0f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
---
title: Worker
slug: Web/API/Worker
translation_of: Web/API/Worker
---
<p>{{APIRef("Web Workers API")}}</p>

<p>A interface <strong>Worker </strong>da <a href="/en-US/docs/Web/API/Web_Workers_API">API do Web Worker</a> representa uma tarefa em background (segundo plano)<em> </em>que pode ser facilmente criada e emitir mensagens de volta ao seu criador. Criar um worker é possível chamando o construtor <code>Worker("path/to/worker/script")</code> e especificando um script para ser executado em sua própria thread.</p>

<p>Um worker pode, por sua vez, gerar outros workers, contanto que estes estejam hospedados na mesma <a href="/en-US/docs/Web/Security/Same-origin_policy">origem</a> da página principal (Nota: workers aninhados <a href="https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/5R3B4RN4GHU">não estão atualmente implementados no Blink</a>). Além disso, workers podem utilizar <a href="/pt-BR/docs/Web/API/XMLHttpRequest">XMLHttpRequest</a> para E/S de rede, desde que seja estipulado que os atributos <code>responseXML</code> e <code>channel</code> em <code>XMLHttpRequest</code> retornem sempre <code>null</code>.</p>

<p><a href="/En/DOM/Worker/Functions_available_to_workers">Não são todas as interfaces e funções que estão disponíveis</a> para o script associado a um <code>Worker</code>.</p>

<div class="blockIndicator note">
<p>No Firefox, se você deseja utilizar workers em extensões e gostaria de ter acesso a <a href="/en/js-ctypes">js-ctypes</a>, você deveria utilizar o objeto {{ domxref("ChromeWorker") }} .</p>
</div>

<h2 id="Construtores">Construtores</h2>

<dl>
 <dt>{{domxref("Worker.Worker", "Worker()")}}</dt>
 <dd>Cria um worker dedicado da web que executa o script especificado na URL. Workers também podem ser construídos usando <a href="/en-US/docs/Web/API/Blob">Blobs</a>.</dd>
</dl>

<h2 id="Propriedades">Propriedades</h2>

<p><em>Herda as propriedades do pai, {{domxref("EventTarget")}}, e implementa as propriedades que compõem o {{domxref("AbstractWorker")}}.</em></p>

<h3 id="Manipuladores_de_Eventos">Manipuladores de Eventos</h3>

<dl>
 <dt>{{domxref("AbstractWorker.onerror")}}</dt>
 <dd>Um {{ domxref("EventListener") }} é chamado sempre quando um {{domxref("ErrorEvent")}} do tipo <code>error</code> é passado através do worker. Este é herdado pelo {{domxref("AbstractWorker")}}.</dd>
 <dt>{{domxref("Worker.onmessage")}}</dt>
 <dd>Um {{ domxref("EventListener") }} é chamado sempre quando um {{domxref("MessageEvent")}} do tipo <code>message</code> é 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")}}.</dd>
</dl>

<h2 id="Métodos">Métodos</h2>

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

<dl>
 <dt>{{domxref("Worker.postMessage()")}}</dt>
 <dd>Envia uma mensagem — qual pode consistir de qualquer objeto do JavaScript — para o escopo interno do worker.</dd>
 <dt>{{domxref("Worker.terminate()")}}</dt>
 <dd>Imediatamente encerra o worker. Isso não oferece ao worker a oportunidade de concluir suas operações; imediatamente o interrompe. <code> <a href="/pt-BR/docs/Web/API/ServiceWorker">ServiceWorker</a> </code>não suportam esse método.</dd>
</dl>

<h2 id="Eventos">Eventos</h2>

<dl>
 <dt><code><a href="/pt-BR/docs/Web/API/Worker/message_event">message </a></code></dt>
 <dd>O evento é disparado quando o script pai do worker recebe uma mensagem do mesmo.<br>
 Também é disponibilizado via <code><a href="/pt-BR/docs/Web/API/Worker/onmessage">onmessage</a>.</code></dd>
 <dt><code><a href="/pt-BR/docs/Web/API/Worker/messageerror_event">messageerror</a></code></dt>
 <dd>Dispara quando um Worker recebe uma mensagem que não pode ser <a href="/pt-BR/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">deserializada</a><br>
 Também é disponibilizado via <code><a href="/pt-BR/docs/Web/API/Worker/onmessageerror">onmessageerror</a>.</code></dd>
 <dt><code><a href="/pt-BR/docs/Web/API/Window/rejectionhandled_event">rejectionhandled</a></code></dt>
 <dd>Dispara sempre que um {{jsxref("Promise")}} é rejeitado, indenpendentemente de haver ou não um manipulador para capturar sua rejeição.<br>
 Também é disponibilizado via <code><a href="/pt-BR/docs/Web/API/WindowEventHandlers/onrejectionhandled">onrejectionhandled</a>.</code></dd>
 <dt><code><a href="pt-BR/docs/Web/API/Window/unhandledrejection_event">unhandledrejection</a></code></dt>
 <dd>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 <code><a href="/pt-BR/docs/Web/API/WindowEventHandlers/onunhandledrejection">onunhandledrejection</a>.</code></dd>
 <dd>.</dd>
</dl>

<h2 id="Exemplos">Exemplos</h2>

<p>The following code snippet shows creation of a {{domxref("Worker")}} object using the {{domxref("Worker.Worker", "Worker()")}} constructor and usage of the object:</p>

<pre class="brush: js notranslate">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');
}</pre>

<p>For a full example, see our<a class="external external-icon" href="https://github.com/mdn/simple-web-worker">Basic dedicated worker example</a> (<a class="external external-icon" href="http://mdn.github.io/simple-web-worker/">run dedicated worker</a>).</p>

<h2 id="Specifications">Specifications</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
  <tr>
   <td>{{SpecName('HTML WHATWG', "#worker", "Worker")}}</td>
   <td>{{Spec2('HTML WHATWG')}}</td>
   <td>No change from {{SpecName("Web Workers")}}.</td>
  </tr>
  <tr>
   <td>{{SpecName('Web Workers', "#worker", "Worker")}}</td>
   <td>{{Spec2('Web Workers')}}</td>
   <td>Initial definition.</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility">Compatibilidade com navegadores</h2>

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

<div>{{CompatibilityTable}}</div>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Chrome</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari (WebKit)</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>4</td>
   <td>3.5</td>
   <td>10.0</td>
   <td>10.6</td>
   <td>4</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Android</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>Firefox OS (Gecko)</th>
   <th>IE Phone</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
   <th>Chrome for Android</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>4.4</td>
   <td>3.5</td>
   <td>1.0.1</td>
   <td>10.0</td>
   <td>11.5</td>
   <td>5.1</td>
   <td>{{CompatUnknown}}</td>
  </tr>
 </tbody>
</table>
</div>

<h2 id="See_also">See also</h2>

<ul>
 <li><a class="internal" href="/En/Using_web_workers" title="en/Using DOM workers">Using web workers</a></li>
 <li><a href="/En/DOM/Worker/Functions_available_to_workers" title="https://developer.mozilla.org/En/DOM/Worker/Functions_available_to_workers">Functions available to workers</a></li>
 <li>Other kind of workers: {{ domxref("SharedWorker") }} and <a href="/en-US/docs/Web/API/ServiceWorker_API">ServiceWorker</a>.</li>
 <li>Non-standard, Gecko-specific workers: {{ domxref("ChromeWorker") }}, used by extensions.</li>
</ul>