Javascript 为什么我的角度服务被呼叫了两次

Javascript 为什么我的角度服务被呼叫了两次,javascript,angularjs,rest,Javascript,Angularjs,Rest,我使用factory创建了一个angular服务,但是当我调用我的服务时,我在浏览器控制台中看到我的服务被调用了两次,我不知道为什么 这是我的服务代码:enqueteurService.js 'use strict'; appMain.factory('enqueteur', function($http, $log,$q) { var deffered = $q.defer(); var data = []; var enqueteur = {};

我使用factory创建了一个angular服务,但是当我调用我的服务时,我在浏览器控制台中看到我的服务被调用了两次,我不知道为什么

这是我的服务代码:enqueteurService.js

'use strict';
appMain.factory('enqueteur', function($http, $log,$q) {

      var deffered = $q.defer();
      var data = [];  
      var enqueteur = {};

      enqueteur.async = function() {
        $http.get('/Gnrqst/enqueteurs/liste-enqueteurs.do')
        .success(function (response) {
          data = response;
          $log.log(response);
          deffered.resolve();
        });
        return deffered.promise;
      };
      enqueteur.getAllEnqueteurs = function() { return data; };

      return enqueteur;
});
'use strict' ;
appMain.controller('EnqueteurController', ['$scope','$http','$log','enqueteur', function ($scope,$http,$log,enqueteur) {

      enqueteur.async().then(function(data) {
        $scope.enqueteurs = enqueteur.getAllEnqueteurs();
      });

 }]);
这是我的控制器代码:enqueteurController.js

'use strict';
appMain.factory('enqueteur', function($http, $log,$q) {

      var deffered = $q.defer();
      var data = [];  
      var enqueteur = {};

      enqueteur.async = function() {
        $http.get('/Gnrqst/enqueteurs/liste-enqueteurs.do')
        .success(function (response) {
          data = response;
          $log.log(response);
          deffered.resolve();
        });
        return deffered.promise;
      };
      enqueteur.getAllEnqueteurs = function() { return data; };

      return enqueteur;
});
'use strict' ;
appMain.controller('EnqueteurController', ['$scope','$http','$log','enqueteur', function ($scope,$http,$log,enqueteur) {

      enqueteur.async().then(function(data) {
        $scope.enqueteurs = enqueteur.getAllEnqueteurs();
      });

 }]);
这是我的jsp页面中使用我的服务的部分:

<tbody>
<tr ng-repeat="enqueteur in enqueteurs">
<td>{{enqueteur.id}}</td>
<td>{{enqueteur.nom}}</td>
<td>{{enqueteur.prenom}}</td>
<td>{{enqueteur.telephone}}</td>
<td>{{enqueteur.email}}</td>
</tr>
</tbody>

{{enqueteur.id}
{{enqueteur.nom}}
{{enqueteur.prenom}
{{enqueteur.电话}
{{enqueteur.email}
我的脚本是:

<script src="<c:url value="/resources/js/angular.js" />"></script>
<!-- ui-bootstrap js -->
<script src="<c:url value="/resources/js/ui-bootstrap.js" />"></script>
<!-- App js -->
<script src="<c:url value="/resources/js/app.js" />"></script>
<!-- enqueteur services js -->
<script src="<c:url value="/resources/js/services/enqueteurService.js" />"></script>
<!-- enqueteurController js -->
<script src="<c:url value="/resources/js/enqueteurController.js" />"></script>

我的代码运行良好,但在浏览器控制台中,我看到我的服务被调用了两次?有人能给我解释一下原因吗

这将显示控制台日志:


如果在chrome或类似浏览器中初始化了多个控制器实例,请在控制器的第4行设置断点-
enqueteur.async()
。如果调试器暂停两次,它将确认页面中有多个控制器实例,我确信是这样的@charlietfl当人们混合使用路由器和
ng控制器时,你会看到这种情况,因为它鼓励使用容易出错的代码,比如在不需要时使用
$q.defer
。事实上,该代码工作不好,因为如果HTTP请求失败,$q.defer将挂起。