Javascript SetInterval每隔一段时间执行脚本13次

时间:2017-02-10 15:06:17

标签: javascript jquery angularjs

所以这是我的剧本,我根本不了解正在发生的事情。

var reloadTableInterval = setInterval(function(){
    console.log('ABC');
}, 120000);

当我这样做时,我注意到它写了13次" ABC"每次间隔完成时,在我的控制台中。我想知道我是否做错了什么?

请注意,此函数是AngularJS(1.3)控制器的一部分。

app.controller('unitCtrl', ['$scope', '$http', '$compile', function($scope, $http, $compile){
    //...
}]);

另外,我有7个使用我的Controller的指令,它们都是以这种方式构建的,但名称不同:

app.directive('clientInfoModal', function () {
    return {
        restrict: 'E',
        replace: true,
        templateUrl: '/reservations/template/ClientInfoModal.html',
        controller: 'unitCtrl'
    };
});

它们被加载到我的HTML文档的底部(它是一个单页的小应用程序)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script>
<script src="js/app.js"></script>
<script src="js/controller/unitController.js"></script>
<script src="js/directive/saleModal.js"></script>
<script src="js/directive/reservationModal.js"></script>
<script src="js/directive/clientInfoModal.js"></script>
<script src="js/directive/unitsTable.js"></script>
<script src="js/directive/waitingListModal.js"></script>
<script src="js/directive/oneUnitWaitingListModal.js"></script>
<script src="js/directive/newNoteModal.js"></script>

1 个答案:

答案 0 :(得分:0)

编辑:修正了基于OP的问题评论帖子的答案

app.service('intervalCheckService', ['$interval', function($interval) {
  return {
    intervalRun: false,
    setInterval: function() {
      if (!intervalRun) {
        this.intervalRun = true;
        var reloadTableInterval = $interval(function() {
          console.log('ABC');
        }, 120000);
      }
    }
  }
}]);

在您的应用中将该服务作为依赖项包含在内。然后将其注入您的控制器。

app.controller('unitCtrl', ['$scope', '$http', '$compile', 'intervalCheckService', function($scope, $http, $compile, intervalCheckService) {
  intervalCheckService.setInterval();
  //...
}]);

如果您需要更多示例,角度文档也是一个很好的服务示例:See Here