Web Workers API のWorkerインターフェースはバックグラウンドで行われるタスクを実行することができ、そのタスクは簡単に生成され、かつ作成元にメッセージを送り返すことができます。Worker()コンストラクタを呼び出しワーカスレッドを走らせるスクリプトを特定してあげるだけでワーカオブジェクトを作成することができます。
ワーカは同じ親ページの同一オリジン内でホストされている限り、他の新しいワーカを発生させる可能性があります。それにくわえて、ワーカはネットワークI/OのためのXMLHttpRequest を使用することもあります。なお、XMLHttpRequestのresponseXMLとchannel要素は常にnullを返す決まりです。
必ずしもすべてのインターフェースと関数がWorkerのスクリプトに関連づいているわけではありません。
Firefoxにおいて、ワーカーをエクステンションを用いてjs-ctypesのInデータにアクセスしたい場合、ChromeWorkerオブジェクトを代わりに使用しなくてはいけません。
プロパティ
EventTargetより継承しています。また、AbstractWorkerのメソッドを定義しています。
イベントハンドラ
AbstractWorker.onerror- errorタイプの
MessageEventがワーカを通して発生するとき、常にEventListenerを呼びます。これはAbstractWorkerからの継承メソッドです。 Worker.onmessage- messageタイプの
MessageEventがワーカを通して発生するときは常にEventListenerを呼びます。例えば、DedicatedWorkerGlobalScope.postMessageを経由して親要素のドキュメントにメッセージが送信されます。 メッセージはdataプロパティに保存されます。
コンストラクタ
メソッド
EventTargetより継承しています。また、AbstractWorkerのメソッドを定義しています。
Worker.postMessage()- ワーカの内部スコープにメッセージを送ることができます。このメッセージは、いかなるJavaScriptのオブジェクトでも送ることができます。
Worker.terminate()- ワーカを直ちに終了させます。実行中の処理は完了を待たずに終了させられます。ServiceWorkerインスタンスはこのメソッドを備えていません。
例
次のコード例では、Worker()コンストラクタを用いて Worker オブジェクトを生成しています。
var myWorker = new Worker("worker.js");
first.onchange = function() {
myWorker.postMessage([first.value,second.value]);
console.log('Message posted to worker');
}
完全なサンプルは次のリンクより御覧ください:Basic dedicated worker example (run dedicated worker)。
Specifications
| Specification | Status | Comment |
|---|---|---|
| WHATWG HTML Living Standard The definition of 'Worker' in that specification. |
Living Standard | Web Workersより変更なし |
| Web Workers The definition of 'Worker' in that specification. |
勧告候補 | 初版 |
ブラウザ実装状況
ブラウザごとの実装状況はWorkersの種類によって異なります。それぞれのWorkersのページを御覧ください。
| 機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| 基本サポート | 4 | 3.5 | 10.0 | 10.6 | 4 |
| 機能 | Android | Firefox Mobile (Gecko) | Firefox OS (Gecko) | IE Phone | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|
| 基本サポート | 4.4 | 3.5 | 1.0.1 | 10.0 | 11.5 | 5.1 | ? |
関連情報
- Web Workersの使い方
- Web Workersで使用可能な関数一覧
- 他のWorkers:
SharedWorker、 ServiceWorker. - 非標準のGecko専用Workers:
ChromeWorker(要プラグイン)

