DOM

インターフェイス

Worker インタフェース

  編集:2022.04.03 by T.A.

MS

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

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

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

コンストラクター
new Worker()
指定された URLにあるスクリプトを実行する専用ウェブワーカーのインスタンスを生成します。また、Blob URL を用いてワーカーを生成することもできます。
プロパティ

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

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

親である EventTarget からメソッドを継承しています。

Worker.postMessage()
ワーカーの内部スコープに、あらゆる JavaScript オブジェクトの形式のメッセージも送ることができます。
Worker.terminate()
ワーカーを直ちに終了させます。ワーカーに終了処理を行わせず、直ちに終了させます。ServiceWorker インスタンスはこのメソッドを備えていません。
イベント
message (en-US)MS
ワーカーの親が、そのワーカーからメッセージを受信したときに発行されます。 onmessage (en-US) プロパティからも利用できます。
messageerror (en-US)MS
Worker オブジェクトが シリアライズ解除できないというメッセージを受け取ったときに発行されます。 onmessageerror プロパティからも利用できます。
rejectionhandled MS
Promise が拒否されるたびに発行されます。拒否を処理するハンドラーがあるかどうかは問いません。 onrejectionhandled イベントハンドラープロパティからも利用できます。
unhandledrejection MS
拒否を処理するハンドラーのない Promise が拒否されたときに発行されます。 onunhandledrejection イベントハンドラープロパティからも利用できます。
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');
}

テスト
HTML:

ここに表示
スクリプト組み込み:



スクリプト:


スクリプト:



表示内容:
表示内容: