Angularjs 拦截器中的循环依赖错误

Angularjs 拦截器中的循环依赖错误,angularjs,factory,Angularjs,Factory,我试图在我的请求拦截器中使用工厂,但我得到了一个循环依赖错误。我不了解AngularJS的所有内容,但我知道喷油器正试图获得一个依靠自身的服务 My factory Global用于发出一些HTTP请求并在屏幕上显示错误消息 以下是我尝试导入工厂的方式: app.factory("authInterceptor", authInterceptor); authInterceptor.$inject = ["$q","Global"]; function authInterceptor($q,G

我试图在我的请求拦截器中使用工厂,但我得到了一个循环依赖错误。我不了解AngularJS的所有内容,但我知道喷油器正试图获得一个依靠自身的服务

My factory Global用于发出一些HTTP请求并在屏幕上显示错误消息

以下是我尝试导入工厂的方式:

app.factory("authInterceptor", authInterceptor);

authInterceptor.$inject = ["$q","Global"];
function authInterceptor($q,Global) {
    return {

        // Add an interceptor for any responses that error.
        'responseError': function (response) {

            // Check if the error is auth-related.
            if (response.status === 401 || response.status === 403) {
              Global.show_fail("Connection expired, please authenticate again");
            }

            return $q.reject(response);
        }

    };

}


app.config(["$httpProvider",
    function ($httpProvider) {
        //Registers the interceptor
        $httpProvider.interceptors.push("authInterceptor");
    }]);
这是angularjs.org上的错误


找到循环依赖项:$http问题在于$httpProvider是$http服务的提供者,您告诉angular将全局工厂注入到自定义拦截器中,但您的全局工厂本身依赖于$http服务。这就是为什么它是一个循环依赖关系

感谢您的简短解释。你认为有什么办法可以避免这个问题吗?试着分担你工厂的责任,认为拦截器可以用不同的方式做事情
app.factory('Global', ['$rootScope', '$http','$mdDialog','$timeout', function($rootScope, $http, $mdDialog,  $timeout){ ... }