Skip to content

Latest commit

 

History

History
87 lines (58 loc) · 5.14 KB

index.md

File metadata and controls

87 lines (58 loc) · 5.14 KB
title slug l10n
Worker
Web/API/Worker
sourceCommit
6fefcdd237a377af5c066dc2734c118feadbbef9

{{APIRef("Web Workers API")}}

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

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

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

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

{{InheritanceDiagram}}

コンストラクター

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

プロパティ

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

メソッド

親である {{domxref("EventTarget")}} からメソッドを継承しています。

  • {{domxref("Worker.postMessage()")}}
    • : ワーカーの内部スコープに、あらゆる JavaScript オブジェクトの形式のメッセージも送ることができます。
  • {{domxref("Worker.terminate()")}}
    • : ワーカーを直ちに終了させます。ワーカーに終了処理を行わせず、直ちに終了させます。 ServiceWorker のインスタンスはこのメソッドを備えていません。

イベント

  • error
    • : ワーカー内でエラーが発生したときに発行されます。
  • message
    • : ワーカーの親が、そのワーカーからメッセージを受信したときに発行されます。
  • messageerror
    • : Worker オブジェクトが シリアライズ解除できないというメッセージを受け取ったときに発行されます。
  • rejectionhandled
    • : プロミス ({{jsxref("Promise")}}) が拒否されるたびに発行されます。拒否を処理するハンドラーがあるかどうかは問いません。
  • unhandledrejection
    • : 拒否を処理するハンドラーのないプロミス ({{jsxref("Promise")}}) が拒否されたときに発行されます。

次のコード例では、 {{domxref("Worker")}} オブジェクトを、 {{domxref("Worker.Worker", "Worker()")}} コンストラクターを用いて生成しています。

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 (専用ワーカーを実行) を参照してください。

仕様書

{{Specifications}}

ブラウザーの互換性

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

{{Compat}}

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

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

関連情報