前两天在b站看到阅读axios源码的视频教程, 点进去看了一下感觉大受震撼, 然后axios框架已经很多年了, 但是他的思想却还是非常经典的. 值得我学习
axios 拦截器
axios 拦截器实现完全就是Promise.then的回调还是一个Promise, 然后then的第二个参数就是出错的回调, 然后Promise的链式调用, 就能把需要处理的拦截器挂在上去, 然后根据顺序来调用
1 | const sucess = (i) => console.log('sucess!', i++)||i |
Output
1 | sucess! 1 |
理解了上面的代码我们就很容易知道拦截器的实现原理了, 我们就可以创建一个拦截器的对象
1 | type CallBack = (config: any) => any; |
拦截器不是有请求前和返回数据前嘛, 我们把请求前的方法放在数组前面, 接收前放后面, 然后循环使用Promise挂在上去, 按照这样的逻辑, 创建一个axios的class
1 | export default class Request { |
这样就实现了一个简易的拦截器
工具类函数
我们导入axios的时候会发现我们可以直接使用axsio(opt), 也可以axios.get(url), 这是因为axios方法挂在了对象
1 | const request = new Request(); |