Pau*_*aul 3 httpresponse interceptor promise angularjs
你能解释一下这段代码的作用:
App.config(['$httpProvider', function ($httpProvider) {
$httpProvider.responseInterceptors.push('HttpSpinnerInterceptor');
$httpProvider.defaults.transformRequest.push(function (data, headersGetter) {
angular.element('.brand img').attr("src","<%= asset_path('brand/brand.gif') %>");
return data;
});
}]);
App.factory('HttpSpinnerInterceptor', function ($q, $window) {
return function (promise) {
return promise.then(function (response) {
angular.element('.brand img').attr("src","<%= asset_path('brand/brand.png') %>");
return response;
}, function (response) {
angular.element('.brand img').attr("src","<%= asset_path('brand/brand.png') %>");
return $q.reject(response);
});
};
});
Run Code Online (Sandbox Code Playgroud)
我完全没有理解,除了一些猜测,它拦截了一些响应并注入了图像的src属性.
我不明白HttpSpinnerInterceptor是如何以及何时被调用的以及"promise"参数是什么.
HttpSpinnerInterceptor是在使用$http服务发出的每个请求完成(成功与否)之后调用的,但是在将promise解析为调用者之前(因此可以推迟结果).实际上不需要转换请求,因为它与HttpSpinnerInterceptor(或者不需要HttpSpinnerInterceptor)大致相同,因为它不会转换任何东西.
promise参数是一个$q承诺,如果您需要在请求结果时执行某些异步操作,可以使用,因为您可以在以后解析它,因此调用者稍后会得到结果.实际上在您的代码中,您直接解决此承诺(或拒绝它),更改图像的src属性.
以下是一些文档链接:
$http服务:http://docs.angularjs.org/api/ng.$http - 仔细查看" 响应拦截器 "和" 转换请求和响应 "| 归档时间: |
|
| 查看次数: |
6468 次 |
| 最近记录: |