0

知っています

  • Javascript は厳密にシングル スレッドであり、settimeout は新しいスレッドを生成しません。代わりに、イベントループ モデルに従います
  • ワーカー スレッドは HTML5 の新しい機能であり、そのサポートはまだすべての HTML5 ブラウザで利用できるわけではありません

バックグラウンドでデータをダウンロードする目的で使用する必要があるのはどれですか? 経験がある場合、または利用可能なベンチマーク データがある場合は、共有してください。

質問することがどのように重要かはわかりませんが、完全を期すために、データは XML 形式であることが想定されており、データを取得するために複数のサーバー側サービスが呼び出されることに言及したいと思います。ハンドヘルド デバイス ベースのブラウザとデスクトップ ベースのブラウザのデータ ダウンロードの両方に対応するフレームワークは既に利用可能ですか?

4

3 に答える 3

2

Javascript はシングル スレッドですが、データが並行してダウンロードされないわけではありません。非同期 AJAX 呼び出しを行う場合、残りのコードが実行されている間にバックグラウンドでデータをダウンロードしています。

Web ワーカーは、CPU を大量に使用する作業をメイン スレッドから切り離して行うことを目的としています。それらは、データをより速く取得するのに役立ちません。

于 2013-01-16T12:30:59.400 に答える
0

ワーカースレッドはまだすべての主要なブラウザーでサポートされているわけではないため、最新のブラウザーのみをサポートする場合を除いて、ワーカースレッドをデザインに含めることは良い考えではないと思います。

すべてのAjax呼び出しは並行して行うことができますが、問題は、すべてのajax呼び出しの応答が来て、データがブラウザーのデータベースに挿入/更新されたことをどのように知るかということだと思います。すべてのAJAX応答が処理されたことを知る1つの方法は、すべてのAJAX呼び出しをチェーンすることです。ただし、これにより、AJAX呼び出しのシーケンスをコードベースにハードコーディングする必要があります。それが望ましくない場合は、すべてのAJAX呼び出しが応答されたかどうかをチェックし続けるために、別個の非同期フローが必要になります。これを実現するには、各ajax呼び出しにフラグを設定し、応答が使用されたときにフラグをtrueに設定します。次に、別のフロー(settimeoutを使用して開始)のすべてのフラグのステータスをチェックし続けます。

このような複雑なアクティビティを処理するための既存のフレームワークを知っているので、同じコードを自分で作成する必要があります。これがあなたに何らかの方向性を与えるのに役立つことを願っています。

于 2013-01-19T04:03:06.347 に答える
0

これは、JQueryを使用して一連の並列AJAX呼び出しを実行する方法を示すスレッドです jQueryを使用した並列非同期Ajaxリクエスト

ワーカースレッドを使用する唯一の理由は、サーバーと常に通信することですが、その場合は websockets の方が優れたソリューションですhttp://www.html5rocks.com/en/tutorials/websockets/basics/

Web ワーカーは IE10+ でのみサポートされているため、古いバージョンの IE をサポートする場合は、フォールバック ソリューションが必要になります。http://msdn.microsoft.com/en-us/library/ie/hh673568(v=vs.85).aspx

于 2013-01-19T01:06:12.000 に答える