Web Workers API のWorkerインターフェースはバックグラウンドで行われるタスクを実行することができ、そのタスクは簡単に生成され、かつ作成元にメッセージを送り返すことができます。Worker()コンストラクタを呼び出しワーカスレッドを走らせるスクリプトを特定してあげるだけでワーカオブジェクトを作成することができます。

ワーカは同じ親ページの同一オリジン内でホストされている限り、他の新しいワーカを発生させる可能性があります。それにくわえて、ワーカはネットワークI/OのためのXMLHttpRequest を使用することもあります。なお、XMLHttpRequestresponseXMLchannel要素は常にnullを返す決まりです。

必ずしもすべてのインターフェースと関数Workerのスクリプトに関連づいているわけではありません。

Firefoxにおいて、ワーカーをエクステンションを用いてjs-ctypesのInデータにアクセスしたい場合、ChromeWorkerオブジェクトを代わりに使用しなくてはいけません。

プロパティ

EventTargetより継承しています。また、AbstractWorkerのメソッドを定義しています。

イベントハンドラ

AbstractWorker.onerror
errorタイプのMessageEventがワーカを通して発生するとき、常にEventListenerを呼びます。これはAbstractWorkerからの継承メソッドです。
Worker.onmessage
messageタイプのMessageEventがワーカを通して発生するときは常にEventListenerを呼びます。例えば、 DedicatedWorkerGlobalScope.postMessageを経由して親要素のドキュメントにメッセージが送信されます。 メッセージはdataプロパティに保存されます。

コンストラクタ

Worker()
特有のURLで動作する専用ワーカのインスタンスを生成することができます。また、Blobsを用いてワーカを生成することもできます。

メソッド

 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 examplerun dedicated worker)。

Specifications

Specification Status Comment
HTML Living Standard
Worker の定義
現行の標準  Unknownより変更なし
Unknown
Worker の定義
不明 初版

ブラウザ実装状況

ブラウザごとの実装状況は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 ?

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: Kenju
 最終更新者: Kenju,