2017-01-04 11 views
4

私は現在angularjsで$ HTTPを模索しています、と私は、この超素晴らしい方法を見てきました:useApplyAsync私の$ http要求を同期します、そして私のアプリが速くなります。

すべて良いが、なぜデフォルトangularjsによってfalseに設定されて?それを使うのに不利な点はありますか?

EDIT:

私もそれを使用してuseApplyAsyncを使用していない間の比較を行いました。

ここで私はそれを使用:ここではhttp://jsfiddle.net/vwnLz344/17/ を、私はそれを使用しませんでした:http://jsfiddle.net/vwnLz344/18/

私はそれの利点を見ることができません...

を私は探しています何がある:利点とuseApplyAsync

答えて

3

useApplyAsyncは~10msの処理を遅延させますが、応答の処理を集約するので、複数の応答が入って​​くると少し速くなる可能性があります以内そのウィンドウを使用すると、余分なオーバーヘッドを避けるダイジェストサイクルを共有できます。

デフォルトの動作は、より迅速に、個々の応答を処理し(私は同期だと思う)が、より必要とする複数の応答がより多くの処理を必要とするので、遅く、全体のかもしれません立て続けに受信された場合のサイクルを消化することがあります。

だから、短い答えuseApplyAsyncはおそらく速く多くのデータを更新し、多くの急速な要求で、デフォルトの動作では、それほど頻繁に要求して、おそらくより速いです。

多くのAJAXリクエストを処理している場合は、おそらくAPIを再考する必要がある(リクエストの統合オプションなど)ため、デフォルトでは無効になっていると思います。複数の応答が短い連続して受信された場合、それは消化サイクルの量を減らす可能性があるuseApplyAsync

を有効にする

利点は、の処理が遅れることがあり

useApplyAsync可能の

短所を必要と集計処理に待っていながら〜10msの応答によって

デフォルトでは無効になっているのはなぜですか?

複数の応答を同時に処理し、追加のダイジェストサイクルを回避しようとする短いウィンドウに対して、ほとんどのAJAX要求を〜10ms遅らせる処理は、有効にすることで節約できる少数の追加のダイジェストサイクルよりも望ましくありません。

関連ドキュメントは、詳細

https://docs.angularjs.org/api/ng/provider/$httpProvider#useApplyAsync

useApplyAsync([値])を有します。

は、「複数のHTTPの処理に 応答を結合する設定$ HTTPサービスは$ rootScopeを経由して同時期に受けた。$ applyAsync。 これは(同時に、多くのHTTP要求を行う大きな アプリケーション向けに大幅なパフォーマンスの改善をもたらすことができます) アプリケーションのブートストラップの間に共通。 」

https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$applyAsync

$ applyAsync([exp]);

$ applyの呼び出しを後で行うようにスケジュールします。実際の の時間差はブラウザによって異なりますが、通常約10 ミリ秒です。

https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$apply

$適用されます([EXP]);

$ apply()は、角度フレームワークの外から角度を付けて式を実行するために使用されます。 (たとえば、ブラウザのDOMイベント、setTimeout、XHR、または第三者のライブラリから)。角度フレームワークを呼び出すので、例外処理、時計の実行の適切なスコープライフサイクルを実行する必要があります。

+0

私は小さなアプリケーションを持っていれば、 'useApplyAssync'は私のAPIに影響しません、なぜそれがデフォルトで有効になっていないのですか?私はまだそれの不利な点を理解していません。 – Coder

+0

@PHPLoverそれはあなたがPHPを愛するからです?ジョークを除いて、デフォルトでオフになっているのは、ウェブが現在どのように動作しているかであるからです。特定のアプリケーションでそれを使用する際に不利な点があるとは限らないため、開発者に何か違うものを強制することはできません。言語と機能はあなたのために特別に書かれていないので、「あなた」を数式から取り出して、同期して動作させる必要がある開発者に踏み込んでください(そのほとんどが偽です)。 – zerohero

+0

欠点は要求を集約するのを待っている間に〜10msの応答処理を遅らせるかもしれないので、他の要求の処理を集約するのを待つ10msごとに各応答処理を遅らせるかもしれない〜100msごとに1つの応答を受け取ります。ダイジェストサイクルを最小限にするより重要性が低い場合は、遅延が重要でダイジェストサイクルを最小限に抑えることが重要ではない場合は、デフォルトのままにしておくことをお勧めします。私はそれがほとんどの要求で10ミリ秒の余分な待ち時間として無効になっていると思う<少数のダイジェストサイクルが保存されている – Brian

関連する問題