Angularjs 有没有办法为拦截器请求$http?

Angularjs 有没有办法为拦截器请求$http?,angularjs,Angularjs,其思想是在某些情况下从另一个来源获取数据,因此我有以下存根: factory("interceptor", function ($q, $location, $http) { return function (promise) { return promise; } } 这与 [$injector:cdep]找到循环依赖项:拦截器注入$injector到拦截器: 使用它可以在回调函数中的返回对象中获取$http 这是一个 在回顾Angular源代码之后,更好的答

其思想是在某些情况下从另一个来源获取数据,因此我有以下存根:

factory("interceptor", function ($q, $location, $http) {
    return function (promise) {
        return promise;
    }
}
这与

[$injector:cdep]找到循环依赖项:拦截器注入
$injector
拦截器
: 使用它可以在回调函数中的返回对象中获取
$http

这是一个


在回顾Angular源代码之后,更好的答案是这样的$http方法无需依赖项注入即可访问,所以诀窍是不要注入$http,而只是简单地使用它。例如:

Right Way

retryModule = angular.module('retry-call', [])

# Do not inject $http
retryModule.factory 'RetryCall', ($q)->
  # More object keys
  'responseError': (response)=>
    # Just use $http without injecting it
    $http(response.config)
    $q.reject(response)

retryModule.config ['$httpProvider', ($httpProvider)->
    $httpProvider.interceptors.push('RetryCall');
]

Wrong Way

# Do not do it this way.
retryModule.factory 'RetryCall', ($q,$http)->

@IlanFrumer是的,谢谢你的有用评论。为什么你需要向拦截器中注入$http?如问题中所述:从另一个来源获取数据。例如,requirest是to/url/one.js,我想用/url/two.js中的数据替换它。这是一个相当高的要求,但看起来很整洁。我无法在我的拦截器中使用
$http
,但我可能误解了你的观点。有没有可能你有一把小提琴,或者可以指出你从源头上学到这一点的地方?我可以用这个在拦截器中发出$http请求吗?我必须这么做
app.config(function ($httpProvider) {
  $httpProvider.interceptors.push('interceptor');
});

app.factory("interceptor", function ($q, $location, $injector) {
  return {
    request: function(config){      
      var $http = $injector.get('$http');
      console.dir($http);
      return config;
    }
  }
});

app.run(function($http){
  $http.get('/')
});
Right Way

retryModule = angular.module('retry-call', [])

# Do not inject $http
retryModule.factory 'RetryCall', ($q)->
  # More object keys
  'responseError': (response)=>
    # Just use $http without injecting it
    $http(response.config)
    $q.reject(response)

retryModule.config ['$httpProvider', ($httpProvider)->
    $httpProvider.interceptors.push('RetryCall');
]

Wrong Way

# Do not do it this way.
retryModule.factory 'RetryCall', ($q,$http)->