仅 2 个提要中的 1 个的刷新/ TImer 功能 -- $q.all() 合并
Refresh/ TImer function for only 1 of 2 feeds -- $q.all() merge
这是一个基于我之前的问题 的问题。
基本上,我使用 $q.all() 方法来解析多个 http 调用。然后我过滤并合并这两个数据源。
这一切都非常有效。但我希望我的两个提要之一每 5 分钟刷新一次。通常,我会通过将以下计时器附加到我的代码
var timer = $scope.intervalFunction = function() {
$timeout(function() {
/* function to call $http.get again */
$scope.intervalFunction();
}, 300000)
};
timer();
$timeout.cancel(timer);
我的问题是,因为我没有将 http 调用定义为单独的函数,而且我还 "merge" 这两个来源,我如何只调用其中一个来源,然后相应地更新而不进行多个列表项副本(这是我多次尝试时发生的事情)。
谢谢!
JSFiddle here
"I want one of my two feeds to refresh every 5 minutes"。我不确定您是否可以通过两个 $q.all
请求之一来解决问题。我只能建议您在 $q.all
包装器之外发出另一个请求,并在您获得第一个 $q.all
请求的结果后为它启动 $timeout
。
需要说的是,我对这个解决方案不是很确定,因为我没有测试它,但希望它能起作用:
$q.all(promises)
.then(function(response) {
metadata = response.metadataPromise.data;
metrics = response.metricsPromise.data;
joinMetadataAndMetrics();
requestEveryFiveMinutes();
})
.catch (error) (function (error) {
console.log(error);
});
function requestEveryFiveMinutes() {
$interval(function() {
// here you can make the needed http request
yourRequest()
.then(function() {
// handle the response as needed
})
.catch(function(err) {
console.log(err);
})
}, 300000);
}
并且不要忘记在您的控制器中注入 $interval
这是一个基于我之前的问题
基本上,我使用 $q.all() 方法来解析多个 http 调用。然后我过滤并合并这两个数据源。
这一切都非常有效。但我希望我的两个提要之一每 5 分钟刷新一次。通常,我会通过将以下计时器附加到我的代码
var timer = $scope.intervalFunction = function() {
$timeout(function() {
/* function to call $http.get again */
$scope.intervalFunction();
}, 300000)
};
timer();
$timeout.cancel(timer);
我的问题是,因为我没有将 http 调用定义为单独的函数,而且我还 "merge" 这两个来源,我如何只调用其中一个来源,然后相应地更新而不进行多个列表项副本(这是我多次尝试时发生的事情)。
谢谢!
JSFiddle here
"I want one of my two feeds to refresh every 5 minutes"。我不确定您是否可以通过两个 $q.all
请求之一来解决问题。我只能建议您在 $q.all
包装器之外发出另一个请求,并在您获得第一个 $q.all
请求的结果后为它启动 $timeout
。
需要说的是,我对这个解决方案不是很确定,因为我没有测试它,但希望它能起作用:
$q.all(promises)
.then(function(response) {
metadata = response.metadataPromise.data;
metrics = response.metricsPromise.data;
joinMetadataAndMetrics();
requestEveryFiveMinutes();
})
.catch (error) (function (error) {
console.log(error);
});
function requestEveryFiveMinutes() {
$interval(function() {
// here you can make the needed http request
yourRequest()
.then(function() {
// handle the response as needed
})
.catch(function(err) {
console.log(err);
})
}, 300000);
}
并且不要忘记在您的控制器中注入 $interval