我希望我的控制器每分钟刷新一些服务(需要调用web服务),所以我写道:
angular.module('App').controller('dashboardCtrl', function($scope, $interval, ServiceOne, ServiceTwo, ServiceThree) {
ServiceOne.init();
ServiceTwo.init();
ServiceThree.init();
//... n
this.refreshServices = function() {
ServiceOne.refresh();
ServiceTwo.refresh();
ServiceThree.refresh();
//... n
};
$interval(funcion() {
var self = this;
self.refreshServices();
});
});
问题是,控制器按角度触发2次,因此2 $interval
同时工作。
如何避免这种情况?
答案 0 :(得分:0)
首先,$ timeout只会在您设置的时间用完后执行一次刷新。
在我看来,这种逻辑是否属于控制器内部,应该移动到模块的.run()块,或者可能移到服务本身内部?
http://docs.angularjs.org/api/ng/service/ $超时
对于重复发生的事件,您最好使用$ interval: http://docs.angularjs.org/api/ng/service/美元区间#! $ interval的示例给出了如何避免两次启动间隔的示例。
在模块文档页面上查看.run(): http://docs.angularjs.org/guide/module