AngularJS中$http拦截器的执行顺序是什么?

5

假设我在angular.js应用程序中注册了几个HTTP拦截器:

  $httpProvider.interceptors.push(function() {
    return {
      request: function(config) {
        console.log("interceptor A request");
        return config;
      },
      response: function(res) {
        console.log("interceptor A response");
        return res;
      }
    };
  });
  $httpProvider.interceptors.push(...); // interceptor B with similar code
  $httpProvider.interceptors.push(...); // interceptor C with similar code

它们将按照什么顺序执行?
1个回答

13

看起来拦截器会按照以下方式执行:

  • 对请求按照注册顺序执行
  • 对响应按照反向注册顺序执行

日志:

interceptor A request
interceptor B request
interceptor C request
(request happens here)
interceptor C response
interceptor B response
interceptor A response

2
你的理解是正确的。请参考以下链接:https://blog.codecentric.de/en/2015/03/angular-http-interceptors-source/ - Harpreet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接