--- title: Worker slug: Web/API/Worker tags: - API - DOM - Interface - JavaScript - Reference - Web Workers - Worker - Workers browser-compat: api.Worker translation_of: Web/API/Worker ---
{{APIRef("Web Workers API")}}

WorkerWeb Workers API のインターフェイスです。スクリプトで生成することができるバックグラウンドタスクを表し、作成元にメッセージを送り返すことができます。ワーカーは Worker("path/to/worker/script") コンストラクターを呼び出すことで生成することができます。

ワーカーは同じ親ページの同一 オリジン 内でホストされている限り、他の新しいワーカーを生成することができます (注: 入れ子になったワーカーは WebKit では未実装です)。

利用可能なすべてのインターフェイスと関数 がすべて Worker の中で利用できるとは限りません。ワーカーはネットワーク通信のために {{domxref("XMLHttpRequest")}} を使うことができますが、 responseXML 属性と channel 属性は常に null になります。 (fetch も利用可能であり、このような制限はありません。)

コンストラクター

{{domxref("Worker.Worker", "Worker()")}}
指定された URLにあるスクリプトを実行する専用ウェブワーカーのインスタンスを生成します。また、 Blob URL を用いてワーカーを生成することもできます。

プロパティ

親インターフェイスである {{domxref("EventTarget")}} からプロパティを継承しています。

イベントハンドラー

{{domxref("Worker.onerror")}}
{{ domxref("EventListener") }} であり、 {{domxref("ErrorEvent")}} の type が error であるイベントが発行されるたびに呼び出されます。
{{domxref("Worker.onmessage")}}
{{ domxref("EventListener") }} であり、 {{domxref("MessageEvent")}} の type が message であるイベントが発行されるたびに呼び出されます。すなわち、 {{domxref("DedicatedWorkerGlobalScope.postMessage")}} を経由して親文書にメッセージが送信されます。メッセージは {{domxref("MessageEvent.data", "data")}} プロパティに格納されます。
{{domxref("Worker.onmessageerror")}}
イベントハンドラーであり、 {{event("messageerror")}} イベントが発行されるたびに呼び出されるコードを表します。

メソッド

親である {{domxref("EventTarget")}} からメソッドを継承しています。

{{domxref("Worker.postMessage()")}}
ワーカーの内部スコープに、あらゆる JavaScript オブジェクトの形式のメッセージも送ることができます。
{{domxref("Worker.terminate()")}}
ワーカーを直ちに終了させます。ワーカーに終了処理を行わせず、直ちに終了させます。 ServiceWorker インスタンスはこのメソッドを備えていません。

イベント

message
ワーカーの親が、そのワーカーからメッセージを受信したときに発行されます。
onmessage プロパティからも利用できます。
messageerror
Worker オブジェクトが シリアライズ解除できないというメッセージを受け取ったときに発行されます。
onmessageerror プロパティからも利用できます。
rejectionhandled
{{jsxref("Promise")}} が拒否されるたびに発行されます。拒否を処理するハンドラーがあるかどうかは問いません。
onrejectionhandled イベントハンドラープロパティからも利用できます。
unhandledrejection
拒否を処理するハンドラーのない {{jsxref("Promise")}} が拒否されたときに発行されます。
onunhandledrejection イベントハンドラープロパティからも利用できます。

次のコード例では、 {{domxref("Worker")}} オブジェクトを、 {{domxref("Worker.Worker", "Worker()")}} コンストラクターを用いて生成しています。

var myWorker = new Worker('/worker.js');
var first = document.querySelector('input#number1');
var second = document.querySelector('input#number2');

first.onchange = function() {
  myWorker.postMessage([first.value, second.value]);
  console.log('Message posted to worker');
}

完全な例は、 Basic dedicated worker example (専用ワーカーを実行) を参照してください。

仕様書

{{Specifications}}

ブラウザーの互換性

ワーカーの種類に応じて対応状況が異なります。詳しくは、それぞれの種類のワーカーのページをご覧ください。

{{Compat}}

オリジンをまたいだワーカーのエラーの動作

古いバージョンのブラウザーでオリジンをまたいでワーカーのスクリプトを読み込もうとすると、 SecurityError が発生していました。最近は、 {{event("error")}} イベントが発行されるようになりました。

関連情報