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

ワーカー上で同期APIを使用するには?

ワーカー上で同期APIを使用するには

解説

ワーカー上のコードは、ドキュメントの表示やユーザーとのやり取りを邪魔することなく、バックグラウンドで並行して実行されます。

そのため、ドキュメント側のコードで実行すると処理を止めてしまう可能性があるという理由で使用できない同期APIが、ワーカー上のコードからは使用可能です。

入出力が完了してから次の処理へと進む同期APIは、HTML5ではWeb SQL Databaseなどのデータベース関連の仕様とFile APIに存在しますが、File API以外は仕様が確定していない状況のため、ここではFile APIの同期APIについてのみ解説します。

File APIの同期APIはFileReaderSyncオブジェクトを利用します。

まず、ドキュメント側のコードで、読み込みたいファイルについてのFileオブジェクトを取得し、生成したワーカーに「postMessage(data)」メソッドで送信します。Fileオブジェクトファイルそのものへの参照ではなく、ファイルについての情報が格納されたオブジェクトなので、問題なくワーカーと送受信を行うことができます。

以下の例ではHTML文書中のinput要素でtype属性fileを持つものを参照して、選択されたファイルFileオブジェクトを取得しています。

// ドキュメント側のコード。inputはinput要素
var worker = new Worker('backend.js');
worker.postMessage(input.files[0]);

ワーカー側では、FileReaderSyncオブジェクトインスタンスを生成し、受信したFileオブジェクトを、このFileReaderSyncオブジェクトの読み込み用メソッドに引数として渡します。非同期APIであるFileReaderオブジェクトとの違いは、読み込んだデータがメソッドの戻り値になることと、読み込みが失敗したときイベントではなく例外が発生することです。

名前内容
ArrayBuffer buffer readAsArrayBuffer(File file)内容を読み込み、固定長のデータ配列バイト操作する場合などに利用するArrayBufferオブジェクトとして返す
String binaryString readAsBinaryString(File file)内容を読み込み、バイナリーデータが書き込まれた文字列として返す
String text readAsText(File file, [String encoding])内容を読み込み、テキストデータとして返す。エンコーディングの指定は省略できる
String dataURL readAsDataURL(File file)内容を読み込み、文字列にデータを埋め込むDataURL形式で返す

この読み込みの処理の間、ワーカーはその完了を待って、次の処理へは進みません。

以下の例では、読み込みが完了した時点で、読み込んだ内容をドキュメント側へ送り返し、それを受けて、ドキュメント側では、送り返されてきたファイル内容をコンソール出力しています。

// 専用ワーカー上で実行するコード backend.js

var reader = new FileReaderSync();
onmessage = function(event){
   // 受信したFileオブジェクトへの参照
   var file = event.data;
   // テキストとして読み込み
   var text = reader.readAsText(file);
   // 読み込んだ内容をドキュメント側へ返信
   postMessage(text);
}
// ドキュメント側のコード
worker.onmessage = function(event){
    console.log(event.data);
}

関連項目

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



シャープのマスクシャープのマスク
シャープが製造・販売する不織布マスク。
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.