angular - 循环依赖

angular - circular dependency

我有史以来第一次遇到这个问题,我在努力找出原因以及如何解决它。

我有两个服务,service1 和 service 2,但显然,存在这样的循环依赖:

serv1 <- serv2 <- serv1

服务代码如下:

angular.module('service1', [])
.service 'serv1', ['$rootScope','$http','$location','serv2',
  function ($rootScope, $http, $location,  serv2){
    serv2.doMyOtherThing(...)
   }
]

服务 2 如下:

angular.module('service2', [])
.service 'serv2', ['$rootScope','$http','$location','serv1',
  function ($rootScope, $http, $location,  serv1){
    serv1.doMyThing(...)
   }
]

为什么会出现循环依赖?我该如何解决?

每个服务都是特定于某些东西的(serv1 各种实用程序和 serv2 数组实用程序),有时我需要同时使用这两者,但目前还不可能。

感谢您的帮助

使用第三个服务,在其他服务中使用第三个服务。

示例:

angular.module('service1',[])
.service 'serv1' [..,'servCommon', function(..,servCommon){}]

angular.module('service2',[])
.service 'serv2' [..,'servCommon', function(..,servCommon){}]

angular.module('serviceCommon',[])
.service 'servCommon' [.., function(..){}]

在那个 servCommon 中添加一些常用函数并从其他两个中使用它们。

希望对您有所帮助。

如果你看到这个Miško Hevery's blog你就会明白:

...
.service 'serv1', ['$rootScope','$http','$location','serv2'

.service 'serv2', ['$rootScope','$http','$location','serv1',

serv1需要serv2并且serv2需要serv1。这将训练循环依赖。

所以你可以使用第三方服务

或者您可以这样解决:

angular.module('service1', [])
.service 'serv1', ['$rootScope','$http','$location','serv2',
    function ($rootScope, $http, $location,  serv2){
        serv2.doMyOtherThing(...)
    }
]

angular.module('service2', [])
.service 'serv2', ['$rootScope','$http','$location','$injector',
    function ($rootScope, $http, $location,  $injector){
        var serv1 = $injector.get('serv1');
        serv1.doMyThing(...)
    }
]