これは前の質問hereに基づいた質問です。
私は本質的に、$ q.all()メソッドを使用して複数のhttp呼び出しを解決しました。次に、2つのデータソースをフィルタリングしてマージします。
これはすべてうまく機能します。しかし、私は2つのフィードのうちの1つを5分ごとに更新したい。通常、私は私のコードの末尾に次のタイマーを追加することでこれを行うだろう、私は別の機能として、HTTP呼び出しを定義していない、と私はまた、両方のソースを「併合」以来
var timer = $scope.intervalFunction = function() {
$timeout(function() {
/* function to call $http.get again */
$scope.intervalFunction();
}, 300000)
};
timer();
$timeout.cancel(timer);
私の問題は、あります、どのようにこれらのソースのうちの1つだけを呼び出すか、それに応じて複数のリスト項目のコピーを作成することなく(これは多くの試みで私に起こったことです)更新します。
ありがとうございました!
JSFiddle here
あなたは正しいと思います。私はいくつかの良い例を探していますが、私は不足しています。 ので、私が持っている場合: $ q.all(約束).then(関数(応答){ メタデータ= response.metadataPromise.data; \t \tメトリクス= response.metricsPromise.data; joinMetadataAndMetrics(); }))catch(エラー)(機能(エラー){ console.log(エラー); }); 2回目のリクエストを行い、$タイムアウトを有効にするにはどうすればよいですか? – KateJean
@KateJean、私は '$ timeout'と言ったが、' $ interval'を意味する。そして、私は答えを更新した、それをチェックしてください。 –
あなたは間違いなく正しいです。確かに - 私は望んでいたように5分間隔で働くように電話を受けることができます。 しかし、単に新しい情報で更新するリスト項目の代わりに、リスト項目は前の項目と再び表示されます。だから、もし私が最初の呼び出しで10のエントリを持っているなら、私は突然第2の呼び出しを20にするでしょう。 私はrequestEveryFiveMinutes()の私の.then部分にjoinMetadataAndMetrics()関数を置いています(私はデータマージをやり直す必要があると考えていたので)。明らかにこれが繰り返しの原因ですが、私はそれを解決する方法がわかりません。 – KateJean