Worker
Worker はウェブワーカー API のインターフェイスで、スクリプトで生成することができるバックグラウンドタスクを表し、作成元にメッセージを送り返すことができます。
ワーカーは Worker("path/to/worker/script") コンストラクターを呼び出すことで生成されます。
ワーカーは同じ親ページの同一オリジン内でホストされている限り、他の新しいワーカーを生成することができます(メモ: 入れ子になったワーカーは WebKit では未実装です)。
利用可能なすべてのインターフェイスと関数がすべて Worker の中で利用できるとは限りません。ワーカーはネットワーク通信のために XMLHttpRequest を使うことができますが、 responseXML 属性と channel 属性は常に null になります。(fetch も利用可能であり、このような制限はありません。)
コンストラクター
プロパティ
親インターフェイスである EventTarget からプロパティを継承しています。
メソッド
親である EventTarget からメソッドを継承しています。
Worker.postMessage()-
ワーカーの内部スコープに、あらゆる JavaScript オブジェクトの形式のメッセージも送ることができます。
Worker.terminate()-
ワーカーを直ちに終了させます。ワーカーに終了処理を行わせず、直ちに終了させます。
ServiceWorkerのインスタンスはこのメソッドを備えていません。
イベント
error-
ワーカー内でエラーが発生したときに発行されます。
message-
ワーカーの親が、そのワーカーからメッセージを受信したときに発行されます。
messageerror-
Workerオブジェクトが シリアライズ解除できないというメッセージを受け取ったときに発行されます。 rejectionhandled-
プロミス (
Promise) が拒否されるたびに発行されます。拒否を処理するハンドラーがあるかどうかは問いません。 unhandledrejection-
拒否を処理するハンドラーのないプロミス (
Promise) が拒否されたときに発行されます。
例
次のコード例では、 Worker オブジェクトを、 Worker() コンストラクターを用いて生成しています。
js
const myWorker = new Worker('/worker.js');
const first = document.querySelector('input#number1');
const second = document.querySelector('input#number2');
first.onchange = () => {
myWorker.postMessage([first.value, second.value]);
console.log('Message posted to worker');
}
完全な例は、 Basic dedicated worker example (専用ワーカーを実行) を参照してください。
仕様書
| Specification |
|---|
| HTML Standard # dedicated-workers-and-the-worker-interface |
ブラウザーの互換性
BCD tables only load in the browser
ワーカーの種類に応じて対応状況が異なります。詳しくは、それぞれの種類のワーカーのページをご覧ください。
オリジンをまたいだワーカーのエラーの動作
古いバージョンのブラウザーでは、オリジンをまたいでワーカーのスクリプトを読み込もうとすると、 SecurityError が発生していました。最近は、 error イベントが発行されるようになりました。
関連情報
- ウェブワーカーの使用
- ウェブワーカーで使用可能な関数一覧
- 他の種類のワーカー:
SharedWorker、サービスワーカー OffscreenCanvasインターフェイス