Web Workers APIを使用するための実際のシナリオを探しています。
Web Workers APIを使用するための実際のシナリオを探しています。
回答:
John Resig(jQueryの名声)には、ここでゲーム、グラフィックス、暗号化など、Webワーカーを使用する興味深い例がたくさんあります。
もう1つの用途はWeb I / Oです。つまり、バックグラウンドでURLをポーリングします。そうすることで、ポーリング結果を待つUIをブロックしません。
別の実用的な用途:Bespinでは、Webワーカーを使用して構文の強調表示を行っています。これは、アプリの使用中にコード編集をブロックしたくない場合に使用します。
Mozillaから:ワーカーが役立つ1つの方法は、ユーザーインターフェイススレッドをブロックせずに、コードがプロセッサ集中型の計算を実行できるようにすることです。
実用的な例として、#の大きなテーブルがあるアプリを考えてみます(これは実世界、BTW-私が2年前にプログラムしたアプリから取ったものです)。入力フィールドを介してテーブル内の1つの#を変更すると、さまざまな列にある他の多数の数値がかなり集中的なプロセスで再計算されます。
以前のワークフローは次のとおりでした:#を変更します。JavaScriptが他の数値への変更を処理し、Webページが3分間応答しない間にコーヒーを飲みに行きます。コーヒーを取り戻す。2番目の#を変更します。何度も繰り返します。保存ボタンをクリックします。
ワーカーを使用した新しいワークフローは次のとおりです。何かが再計算されていることを示すステータスメッセージを取得しますが、他の#を変更できます。さらに#を変更します。変更が完了したら、ステータスが「すべての計算が完了し、最後の#を確認して保存できる」に変わるまで待ちます。
私はブラウザからサーバーに大量のデータを送信するためにそれらを使用しました。もちろん、通常のAJAX呼び出しでこれを行うことができますが、これがホスト名ごとの貴重な接続の1つを占める場合。また、ユーザーがこのプロセス中にページ遷移を行う(リンクをクリックするなど)と、前のページのJavaScriptオブジェクトが消え、コールバックを処理できなくなります。Webワーカーが使用されている場合、このアクティビティは帯域外で発生するため、完了することが保証されます。
別の使用例:
サーバーから圧縮形式で交換される画像やその他のメディアファイルが多数ある場合は、バックグラウンドでファイルを圧縮/解凍します。
<canvas>
)で生成された画像を処理している場合は、圧縮形式(つまりpng)で画像データを取得できます。私のポイントは、JSで圧縮することは決して適切ではないということではありませんでした。私の要点は、ほとんどの場合、そうではなく、ほとんどの場合- 特にこの回答で述べられている画像の処理-独自の圧縮をローリングするより良い代替手段があることです。