axios源码解析 - 响应拦截器
2022/5/11 17:13:44
本文主要是介绍axios源码解析 - 响应拦截器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
该文章紧接着 axios源码解析 - 请求拦截器,简单的补充下。
业务代码如下:
var service = axios.create(); // 响应拦截器 service.interceptors.response.use((response) => { if (response.data.code === 200) { return response.data; } else { return Promise.reject(response.data); } }, (err) => { return Promise.reject(err); });
核心代码如下:
// 请求拦截数组 var requestInterceptorChain = []; this.interceptors.request.forEach(function(interceptor) { requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); }); // 响应拦截数组 var responseInterceptorChain = []; this.interceptors.response.forEach(function(interceptor) { responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); }); var promise; var chain = [dispatchRequest, undefined]; Array.prototype.unshift.apply(chain, requestInterceptorChain); chain = chain.concat(responseInterceptorChain); promise = Promise.resolve(config); while (chain.length) { promise = promise.then(chain.shift(), chain.shift()); } return promise;
多个响应拦截器
主要讲多个响应拦截器的执行顺序,代码如下:
// 第一个响应拦截器 service.interceptors.response.use(fulfilled1, rejected1); // 第二个响应拦截器 service.interceptors.response.use(fulfilled2, rejected2); // 第三个响应拦截器 service.interceptors.response.use(fulfilled3, rejected3); // 根据上述Axios.prototype.request方法,可以知道handlers数组:[fulfilled1, rejected1, fulfilled2, rejected2, fulfilled3, rejected3] // 所以执行顺序:fulfilled1 --> fulfilled2 --> fulfilled3
这篇关于axios源码解析 - 响应拦截器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12Axios库资料:新手入门必读教程
- 2024-11-11Axios库项目实战:新手入门教程
- 2024-09-29Axios库教程:初学者必备指南
- 2024-08-29Axios库资料:新手入门指南与基本使用教程
- 2024-03-14system bios shadowed
- 2024-03-14gabios
- 2024-02-07iOS应用提交上架的最新流程
- 2024-02-06打包 iOS 的 IPA 文件
- 2023-12-07uniapp打包iOS应用并通过审核:代码混淆的终极解决方案 ?
- 2023-11-25uniapp IOS从打包到上架流程(详细简单) 原创