WebワーカーAPI
Webワーカーは、ページのパフォーマンスに影響を与えずにバックグラウンドで実行されるJavaScriptです。
Webワーカーとは?
HTMLページでスクリプトを実行すると、スクリプトが完了するまでページが応答しなくなります。
Webワーカーは、ページのパフォーマンスに影響を与えることなく、他のスクリプトから独立してバックグラウンドで実行されるJavaScriptです。Web Workerがバックグラウンドで実行されている間、クリック、選択など、好きなことを続けることができます。
ブラウザのサポート
表の番号は、Web Workerを完全にサポートする最初のブラウザーバージョンを示しています。
Chrome 4 | IE10 | Firefox 3.5 | Safari 4 | Opera 11.5 |
2010年1月 | 2012年9月 | 2009年6月 | 2009年6月 | 2011年6月 |
Webワーカーの例
以下の例では、バックグラウンドで数値をカウントする単純な Webワーカーを作成します。
例
Webワーカーのサポートを確認する
Webワーカーを作成する前に、ユーザーのブラウザーがWeb ワーカーをサポートしているかどうかを確認してください。
Webワーカーファイルを作成する
それでは、外部JavaScriptでWebワーカーを作成しましょう。
ここでは、重要なスクリプトを作成します。スクリプトは「demo_workers.js」ファイルに保存されます。
上記のコードの重要な部分は、ページにメッセージをポストバックするために使用されるpostMessage()
メソッドです。
注:通常、Webワーカーはこのような単純なスクリプトには使用されず、よりCPUを集中的に使用するタスクに使用されます。
Webワーカーオブジェクトを作成する
Webワーカーファイルができたので、HTMLページからそれを呼び出す必要があります。
次の行は、ワーカーが既に存在するかどうかを確認し、存在しない場合は、新しいWebワーカーオブジェクトを作成し、「demo_workers.js」でコードを実行します。
次に、Webワーカーからメッセージを送受信できます。
「onmessage」イベントリスナーをWebワーカーに追加します。
Webワーカーがメッセージを送信すると、イベントリスナー内のコードが実行されます。Webワーカーからのデータはevent.dataに保存されます。
Webワーカーを終了する
Webワーカーオブジェクトが作成されると、終了するまで(外部スクリプトが終了した後でも)メッセージをリッスンし続けます。
Webワーカーを終了し、ブラウザー/コンピューターリソースを解放するには、次のterminate()
メソッドを使用します。
Web Workerを再利用する
ワーカー変数を未定義に設定すると、終了後にコードを再利用できます。
完全なWebワーカーのサンプル コード
.jsファイル内のWorkerコードは既に確認しました。以下は、HTMLページのコードです。
例
WebワーカーとDOM
Webワーカーは外部ファイルにあるため、次のJavaScriptオブジェクトにはアクセスできません。
- ウィンドウオブジェクト
- ドキュメントオブジェクト
- 親オブジェクト
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。