Worker

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

* Some parts of this feature may have varying levels of support.

メモ: この機能はウェブワーカー内で利用可能ですが、サービスワーカーでは使用できません。

Workerウェブワーカー API のインターフェイスで、スクリプトで生成することができるバックグラウンドタスクを表し、作成元にメッセージを送り返すことができます。

ワーカーは Worker("path/to/worker/script") コンストラクターを呼び出すことで生成されます。

ワーカーは同じ親ページと同一のオリジン内でホストされている限り、他の新しいワーカーを生成することができます。

すべてのインターフェイスと関数がウェブワーカーで利用できるわけではないことにご注意ください。詳細については、ウェブワーカーで利用可能な関数とクラスを参照してください。

EventTarget Worker

コンストラクター

Worker()

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

インスタンスプロパティ

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

インスタンスメソッド

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

Worker.postMessage()

ワーカーの内部スコープに、あらゆる JavaScript オブジェクトの形式のメッセージも送ることができます。

Worker.terminate()

ワーカーを直ちに終了させます。ワーカーに終了処理を行わせず、直ちに終了させます。 ServiceWorker のインスタンスはこのメソッドを備えていません。

イベント

error

ワーカー内でエラーが発生したときに発行されます。

message

ワーカーの親が、そのワーカーからメッセージを受信したときに発行されます。

messageerror

Worker オブジェクトが シリアライズ解除できないというメッセージを受け取ったときに発行されます。

次のコード例では、 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("メッセージがワーカーへ渡されました");
};

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

仕様書

Specification
HTML
# dedicated-workers-and-the-worker-interface

ブラウザーの互換性

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

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

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

関連情報