DOM

Workerインターフェイス

:prototype.

postMessage メソッド

  編集:2022.02.13 by T.A.

MS

ワーカーの内部スコープにメッセージを送信します。
これは、ワーカーに送信するデータを単一の引数として受け取ります。このデータは任意の値、または循環参照を含む場合は構造化クローン アルゴリズムで扱う JavaScript オブジェクトが許可されます。

Worker の postMessage() メソッドは MessagePortpostMessage() メソッドに委任して、受信する MessagePort に対応するイベント ループのタスクを追加します。

Worker は DedicatedWorkerGlobalScope.postMessage(en)メソッド使用して自分を起動したスレッドに情報を送り返すことができます。

worker.postMessage(message,[transfer])
worker Worker
message ワーカーに送るオブジェクトです。これは DedicatedWorkerGlobalScope.onmessage(en-US)ハンドラーに配信されるイベントの data フィールドに入ります。このデータは任意の値、または循環参照を含む場合は構造化クローン アルゴリズムで扱う JavaScript オブジェクトが許可されます。

message 引数が提供されていない場合は、TypeError が発生します。ワーカーに渡すデータが重要でない場合は、null または undefined を明示的に渡すことができます。

transfer 省略可 オプションで、所有権を移転する Transferable オブジェクトの配列です。

オブジェクトの所有権が移転されると、そのオブジェクトは送信元のコンテキストでは使用できなくなり、送信先のワーカーのみが使用できるようになります。

Transferable オブジェクトは ArrayBufferMessagePortImageBitmap のような移転可能なクラスのインスタンスです。null を transfer の値として受け付けることはできません。

戻り値

なし

例外
TypeError
message 引数が提供されていない場合は。
Worker() コンストラクターを使用して Worker オブジェクトを作成しています。2 つのフォーム入力要素(first と second)のどちらかの値が変更されると、変更イベントによって postMessage() が呼び出され、両方の入力要素の値が現在のワーカーに送信されます。
var myWorker = new Worker('worker.js');

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

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

¶省く


テスト
HTML:

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



スクリプト:


スクリプト:



表示内容:
表示内容: