専用ワーカーとデータのやり取りをするには?専用ワーカーとデータのやり取りをするには?専用ワーカーの起動バックグラウンドで独立した処理を行うワーカーには、自分自身を起動したコードとのみ通信できる専用ワーカーと、複数のコードと通信可能な共有ワーカーがあります。専用ワーカーの起動は、そのワーカーに対するクライアントとなるWorkerオブジェクトをコンストラクター「Worker(url)」を使ってインスタンス化することで行います。引数urlには、その専用ワーカー上で実行させる処理を記述したファイルのurlを指定します。指定するファイルはセキュリティ上、urlの生成元(オリジン)が起動側と同じものに限定されます。オリジンとは、スキーム(urlの「http://」の部分)、ドメイン(urlの「www.example.com」の部分)、ポート(urlの「:8080」の部分)を合わせたもののことです。Workerオブジェクトの生成ごとに新しい専用ワーカーが起動されますが、多数のワーカーの生成はそれだけクライアント側の負荷を増大させます。Worker('backend.js');起動した側で、専用ワーカーとデータの送受信を行うには専用ワーカーへデータを送るには、Workerオブジェクトの「postMessage(data)」メソッドを呼び出します。引数dataには送信するオブジェクトを指定します。worker.postMessage("送信データ");メッセージの送信も非同期で実行されるため、専用ワーカー側の受信や返信といったアクションを待たずメソッド自体はすぐに終了します。ワーカーとのデータのやり取りでは、異なる処理の流れの間での通信であるということから、いくつか制限があります。データは、オブジェクトそのものではなく、コピーが渡されます。受信した側でオブジェクトに変更を加えても、送信元のオブジェクトには影響を与えません。ドキュメント側とワーカー側ではアクセスできるオブジェクトに違いがあります。ワーカー上では、windowオブジェクトやHTML要素を参照・操作することはできません。そのため、送受信可能なのは、基本的に言語組み込みの型など、ドキュメント側とワーカー側で共通で利用できるオブジェクトだけになります。独自で定義したオブジェクトを期待通り送受信するには、「JSON.stringify(value)」、「JSON.parse(text)」メソッドで、JSON形式の文字列に変換して渡し、復元する方法が利用可能です。この場合引数valueは文字列に変換するオブジェクト、textはオブジェクトに復元する文字列です。ドキュメント側で専用ワーカーからのデータを受け取るには、Workerオブジェクトのonmessageイベントハンドラを定義します。onmessageイベントハンドラは、専用ワーカーからデータが送信される度に、随時非同期で呼ばれます。送信されたデータは、引数eventのdata属性に格納されています。console.log(event.data);}専用ワーカーの実行を終了させるには、「terminate()」メソッドを呼び出します。worker.terminate();専用ワーカー上で、起動した側とデータの送受信を行うには専用ワーカーから、自分自身を起動した側にメッセージを送るには「postMessage(data)」メソッドを使用します。このメソッドは、専用ワーカー上のコードからは関数のように直接呼び出すことができます。専用ワーカー上のコードpostMessage("送信データ");送受信できるデータの制約については、起動した側のコードから送信する場合と同様で、両方で利用可能なオブジェクトに限られ、そのオブジェクトそのものではなく、コピーが送られます。メッセージの受信に関してはonmessageイベントハンドラを定義します。受信データは引数eventのdata属性を参照します。event.data;}onmessageイベントハンドラも、グローバル変数のようにして代入します。ワーカー上のコードで、どのようなオブジェクトが使用できるかについては、ワーカー上で動くコードを実装するには?を参照ください。Proファーウェイ(華為技術)・ジャパンが販売するスマートバンド。Proサムスン電子が発表したタフネス仕様スマホ。FoldLenovoが発表したフォルダブル端末。人工知能の研究分野における第一人者。Appleの共同創設者スティーブ・ジョブズ「Mac」や「iPhone」を生み出した経営者。MPEG-4オーディオファイルの拡張子。iPhoneの着メロにするAACファイルにつく拡張子。2007で作成したファイルのデフォルトの拡張子。2007の標準的な保存形式。XML形式となっている。