IT用語辞典バイナリ | さくいん | サイトマップ | ヘルプ | お気に入りに追加  
HTML5 JavaScript API
IT用語辞典バイナリ<パソコン用語・コンピュータ辞書>
コンピュータ偉人伝<人物・画像・写真・プログラミング>
コンピュータ偉人伝<人物・画像・写真・プログラミング>
コンピュータ偉人伝<人物・画像・写真・プログラミング>
拡張子辞典<ファイル・変換・変更・表示>
HTML5タグリファレンス
CSS3リファレンス
HTML5 JavaScript API
エクセル関数リファレンス
ITパスポート試験
 
  
  IT用語辞典バイナリ > HTML5 JavaScript API > Web Messagingの使い方 > ワーカー上で動くコードを実装するには?
  カテゴリ別さくいん

ワーカー上で動くコードを実装するには?

ワーカー上で動くコードを実装するには

解説

ワーカー上で実行するコードは、通常のJavaScriptで記述しますが、ドキュメント側で実行されるコードとは、いくつかの点で違いがあります。

まず、ワーカー上で実行されるコードは、ドキュメントとは独立して実行されるため、windowオブジェクトdocumentオブジェクトなどの、ドキュメントを参照・操作するオブジェクト(DOM:Document Object Model )にアクセスすることはできません。

つぎに、ワーカー上で実行するコードと、ドキュメント側で実行されるコードでは、既定のオブジェクトが異なります。

JavaScriptでは、ブロックや関数定義の外など、トップレベルで定義された変数や関数は、既定のオブジェクト属性メソッドになります。また、既定のオブジェクト属性メソッドは、グローバル変数関数のような形で参照することができます。

ドキュメント側のコードでは、この省略時の既定のオブジェクトwindowオブジェクトになっているのに対し、ワーカー上のコードでは、以下のような属性イベントハンドラメソッドを持つグローバルオブジェクトになっています。

名前内容
属性selfグローバルオブジェクト自身を指す
locationワーカーのスクリプトファイルの場所を格納。window.locationと属性属性の意味はほぼ同じだが別のオブジェクト属性protocolhost、port、hostname、pathname、search、hash
navigatorwindow.navigatorと属性属性の意味はほぼ同じだが別のオブジェクトブラウザの判別に用いる。属性はappName、appVersion、platformuserAgentonLine
イベントハンドラonerrorエラー発生時のイベントハンドラ。引数eventはErrorEventオブジェクト
メソッドclose()このワーカーを終了させる
importScripts(urls)urlsは複数指定可能。urlで指定されたスクリプトのコードを読み込んで実行する
setTimeout(handler, [timeout])タイマーをセットする。windowオブジェクトの同名のメソッドと同じ
clearTimeout(id)タイマーをクリアする。windowオブジェクトの同名のメソッドと同じ
setInterval(handler, [ timeout])定期タイマーをセットする。windowオブジェクトの同名のメソッドと同じ
clearInterval(id)定期タイマーをクリアする。windowオブジェクトの同名のメソッドと同じ

専用ワーカー上では共通のものに追加して以下のイベントハンドラメソッドが存在します。

onmessageメッセージ受信時のイベントハンドラevent引数のdata属性で受信したデータを参照する
postMessage(message, [transfer])メッセージをこのワーカーを生成したコードへ送信する

共有ワーカー上では共通のものに追加して以下の属性イベントハンドラが存在します。

nameこの共有ワーカーの名称
onconnectこの共有ワーカーへ新しい接続が開始された時のイベントハンドラ
引数eventのports属性に格納された配列の最初の位置(event.ports[0])に接続元と通信するMessagePortオブジェクトが格納される

その他、ドキュメントの要素の利用を必須としないHTML5のAPI(File API、Server-Sent Events、WebSocketなど)は、ブラウザサポートしていれば、ワーカー上でも原則として使用できます。XMLHttpRequestオブジェクトも共通して使用可能です。

また、ワーカー上では、ドキュメント側のコードでは、処理を止める可能性があるために実行できないFileReaderSyncなどの同期処理のAPIを使用することができます。これについての詳細はワーカー上で同期APIを使用するには?を参照ください。

FirefoxOperaでは、ワーカー上のコードでワーカーを生成することも可能です。

ワーカー上で実行されているコードエラーが発生し、try構文などで処理されなかった場合、errorイベントコード側で発生します。このイベントがonerrorイベントハンドラでハンドリングされなかった場合、接続しているWorkerオブジェクトまたはSharedWorkerオブジェクトのport属性に設定されているMessagePortオブジェクトerrorイベントが発生します。

onerrorイベントハンドラの引数eventはErrorEventオブジェクトで、Eventオブジェクトの各属性に加えて、message(エラーを説明する文字列)、filename(エラーが起きたファイル名。この場合はワーカー上で実行しているコードファイル名)、lineno(エラーが起きた行数)の各属性を持っています。

// 接続元の側のコードで処理する場合
var worker = new Worker('code.js');
worker.onerror = function(e){
    console.log(e.message);
    console.log(e.filename);
    console.log(e.lineno);
}

関連項目

専用ワーカーとデータのやり取りをするには?
共有ワーカーとデータのやり取りするをには?
ワーカー上で同期APIを使用するには?
Web Workers関連オブジェクトの属性、メソッド一覧



シャープのマスクシャープのマスク
シャープが製造・販売する不織布マスク。
Surface Book 3Surface Book 3
Microsoftが販売するデタッチャブルPC。
Surface Go 2Surface Go 2
Microsoftが発表した2in1 PC。

 ・ITパスポート試験とは
 ・試験範囲と内容
 ・サンプル問題にチャレンジ

 ・Windowsの歴史
ジョン・マッカーシー LISPの開発者
ジョン・マッカーシー
人工知能の研究分野における第一人者。
スティーブ・ジョブズ Appleの共同創設者
スティーブ・ジョブズ
「Mac」や「iPhone」を生み出した経営者。
デニス・リッチー C言語、UNIXの開発者
デニス・リッチー
C言語の設計、UNIXの開発に携わった人物。
».m4b MPEG-4オーディオファイルの拡張子。 up!
».m4r iPhoneの着メロにするAACファイルにつく拡張子。 up!
».xlsx Excel 2007で作成したファイルのデフォルトの拡張子。
».docx Word 2007の標準的な保存形式。XML形式となっている。

2024年3月19日現在
ランキング1   ICT (用語辞典)
ランキング2   AirDrop (用語辞典)
ランキング3   コンテキスト  (用語辞典)
ランキング4   セグメント  (用語辞典)
ランキング5   アノテーション  (用語辞典)
ランキング6   オムニチャネル  (用語辞典)
ランキング7   スワイプ  (用語辞典)
ランキング8   インスタンス化  (用語辞典)
ランキング9   カラム  (用語辞典)
ランキング10   FOMO  (用語辞典)
RSS 0.91 RSS 1.0 RSS 2.0
IT用語辞典バイナリについて運営会社についてお問い合わせ先テクニカルライター募集利用規約
プライバシーポリシー著作権・商標について協力社一覧Weblio 辞書スマート翻訳英和辞典 - Weblio辞書Weblio英会話
©2023 GRAS Group, Inc. All rights reserved.