1

promise を返す非同期 WinJS 呼び出しを行う場合、promise の進行状況コールバック関数はどのくらいの頻度で呼び出されますか? 次のコードを検討してください。

WinJS.xhr({ url: "http://localhost:51299/api/values" }).done(

    function complete() {
        console.log("complete: " + new Date().getTime());
    },

    function error() {
    },

    function progress() {
        console.log("progress: " + new Date().getTime());
    }

);

このコードを実行すると、progress:メッセージが 1 ミリ秒ごとに複数回表示されます。全体として、xhr 呼び出しからすべてのデータを取得するのにかかる 1 ~ 2 秒間に、 progress:メッセージが 100 ~ 200 回表示されることがあります。

  1. プログレス関数は設定された間隔で呼び出されますか? もしそうなら、その間隔はどれくらいですか?
  2. これを頻繁に実行させるのはパフォーマンスの問題ですか?
  3. ある種のタイマー機能を使用して実行頻度を減らすように制限することをお勧めしますか、それとも影響は重要ではありませんか?
4

1 に答える 1

4

プログレス コールバックは、promise のソース (この場合は XHR システム) によって決定されます。彼らがいつ出てくるかをコントロールすることはできません。この場合、XmlHttpRequest は進行状況を更新しています。全体的な制御はありません。進行状況の更新がいつ発生するかは、すべて非同期操作次第です。

パフォーマンスへの影響が見つかった場合は、更新を進行させるために応答を調整することを検討する必要がありますが、アプリによって異なります。

于 2012-11-29T20:15:30.170 に答える