Angularjs ngResource多个web服务调用冲突



我正在使用angularjs开发一个项目。我正在使用ngResource进行web服务调用。在我的应用程序中,有一个web服务调用,每30秒运行一次。现在我面临的问题是,在某些情况下,用户操作调用的web服务和自动运行的web服务相互冲突。我想避开它。我该怎么做?

setInterval(function () {
$scope.getAllReports();
}   
}, 30000);

reportService.factory('Reports', function ($resource, AppSettings) {
return $resource(AppSettings.api_url + 'reports/:reportId', {
reportId: '@reportId'
}, {
getReports: {
method: 'POST'
}
});
});

请查看演示

http://jsfiddle.net/Kn3Tc/79/

首先,您应该考虑使用$interval(window.setInterval的Angular包装器)

它确保范围的任何更改都将反映在其他地方。

在你的控制器中,你也可以在每次用户手动点击按钮时重置你的间隔,以避免碰撞(如果我正确理解你想要的):

var interval;
function startInterval() {
interval = $interval(function () {
$scope.results = myService.get();
}, 30000);  
}
$scope.advanceSearch = function() {
$scope.results = myService.get();
$interval.cancel(interval);
startInterval();
};
startInterval();

另外,不要忘记添加$interval作为依赖项。

链接:http://plnkr.co/edit/AuLJjiSLsscimvZC5Spi

最新更新