Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何从控制器获取单个$interval()调用_Angularjs - Fatal编程技术网

Angularjs 如何从控制器获取单个$interval()调用

Angularjs 如何从控制器获取单个$interval()调用,angularjs,Angularjs,我希望我的控制器每分钟刷新一些服务(需要调用Web服务),因此我写道: angular.module('App').controller('dashboardCtrl', function($scope, $interval, ServiceOne, ServiceTwo, ServiceThree) { ServiceOne.init(); ServiceTwo.init(); ServiceThree.init(); //... n this.ref

我希望我的控制器每分钟刷新一些服务(需要调用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
同时工作


如何避免这种情况?

首先,$timeout只会在您设置的时间用完时执行一次刷新

在我看来,这种逻辑不属于控制器内部,应该移到模块的.run()块中,或者移到服务本身中

$timeout

对于重复发生的事件,最好使用$interval: $interval#! $interval的示例给出了如何避免间隔启动两次的示例

在模块文档页面上签出.run()

谢谢你闯入
$interval()
我没有找到它,所以我想angular只使用了
$timeout()
。当我只想刷新其中一个时,我的服务中就有这种逻辑,但现在我有很多,我认为控制器是最好的地方<代码>运行也可以是一个选项,但应用程序将始终使用此处理,即使不需要(当我们在另一个视图上时)。