0

私はUIに5列のテーブルを持っています。これらの列には、異なるディレクティブ(つまり、カスタムプログレスバー、マージンチャート、目標達成チャートなど)を使用してレンダリングされるさまざまなチャートが含まれます。 現在作業中です。Angularjsでは、複数のディレクティブを並列に読み込むことは可能ですか?

問題: - ページの読み込み中に、ページがレンダリングするのに約10秒かかります。 (バックエンドからのデータはデータを返すために800-900msかかる)。チャートの列数を5から1に減らすと、ページのレンダリングにかかる​​時間が大幅に2.5秒に短縮されました。レンダリングページの取り込み時間は、列を1つずつ追加するにつれて1〜2秒長くなります。

ページをレンダリングするのにかかる時間が3〜4秒程度になるように、私は5つのディレクティブを同時に呼び出すことができる方法があるかどうかを調べています。

ありがとうございます!

+0

5カラムのデータがサーバから1回のコールで受信されるか、カラム固有のコールがありますか?それにはいくつの行がありますか? –

+0

すべての5列のデータがサーバからのsigleコールに入っています。返されるデータには、各オブジェクトが36のプロパティを持つオブジェクトのリストが含まれます。ある時点で私は最大25のオブジェクトを受け取りました。 1 json - 25各オブジェクトには36個のプロパティ/フィールドが含まれています。 これに要した合計時間は800/900ミリ秒です – nishant3150

答えて

0

あなたの問題を見ると、以下のように分かち合うことができます。

  1. ディレクティブは、互いにネストされていない限り、常に並列に実行されます。あなたのシナリオでは、それらが並列実行されるようにng-repeatループに入っていると仮定します。
  2. 25個のオブジェクトすべてを一度に呼び出すことは避けてください(ページネーションの種類のユースケースを使用してください)。サーバーレベルの時間を節約します。
  3. DOMのすべてのチャートを同時にレンダリングしないようにします。 DOMレンダリングはロードサイクルで最もコストのかかるプロセスです。レンダリング5を試してみてくださいが、ディスプレイブロックで1つを表示し、ディスプレイなしで休憩して、1つずつ表示してください。これはDOMのフリーズを回避します。 ng-repeatでlimitオプションを試してください。

DOMコードとJSコードを共有できるのは素晴らしいことです。

関連する問題