AngularJs 拦截器的循环依赖

AngularJs Circular Dependency for Interceptor

我有以下循环依赖:

            $http
            /   \
           /     \
          /       \
         /         \
LoginManager------Interceptor
 (service)         (factory)

这个Circular dependency是在我添加了Interceptor的代码之后才出现的。

Interceptor会调用LoginManager中的注销函数,以防某个response被拦截。

From what I see, only solution is to move interceptor code inside the LoginManager service as an anonymous factory

有没有更好的办法?

您可以通过使用 injector 服务在运行时获取 LoginManager 的实例来避免循环依赖。

var loginManager = $injector.get('LoginManager');

只需确保在拦截器的方法之一(例如 responseError)中使用此代码,而不是直接在拦截器创建代码中使用。