我正在使用基于此答案的方法:Server polling with AngularJS
但是,当我有多种轮询方法时,如何设置此更新?
以下是我服务的片段:
function pollingService($resource) {
return {
methodA: $resource(window.rootUrl + 'api/methodA', { para: '@para1' }, {
query: { method: 'GET', params: {}, isArray: false }
}),
methodB: $resource(window.rootUrl + 'api/methodB', {}, {
query: { method: 'GET', params: {}, isArray: false }
})
}
};
那么如何设置tick方法来轮询theese 2方法并仅创建1个轮询循环?
(function tick() {
$scope.method1 = pollingService.methodA.query(function () {
$timeout(tick, $scope.refreshRate);
});
$scope.method2 = pollingService.methodB.query(function () {
$timeout(tick, $scope.refreshRate);
});
})();
答案 0 :(得分:2)
您可以使用promises $q.all
函数:
var myTickFunc = function() {
return $q.all([pollingService.methodA.query().$promise, pollingService.methodA.query().$promise)
.then(function(result){
//Setup timer again
});
答案 1 :(得分:1)
使用$q.all()
(function tick() {
var promises = [];
promises.push(pollingService.methodA.query().$promise);
promises.push(pollingService.methodB.query().$promise);
$q.all(promises).then(function(results){
var result1 = results[0]; //Result from methodA
var result2 = results[1]; //Result from methodB
$timeout(tick, $scope.refreshRate);
}
})();