axios源码学习记录

本文探讨了axios的混合模式实现,即它既能作为函数调用(如axios({})),也能作为对象使用(如axios.get)。深入解析了axios的调用过程,从axios.request开始,经过请求和响应拦截器,到实际的请求执行。同时,介绍了axios拦截器的工作原理,如何添加和管理拦截器。另外,解释了axios的取消功能,以及它如何在浏览器和Node.js环境中发送请求。
摘要由CSDN通过智能技术生成

axios的混合模式是怎么实现的?也就是 axios 既可以当函数调用,也可以当对象使用,比如axios({})、axios.get

本身axios就是个函数,对象调用是因为在axios的原型上挂载了这些方法 2020.1.16更新

axios定义了一个类,类里面里面有request(config)getpostoptions等方法,我们使用的axios其实就是这个类实例里面的request方法,然后将类里面的其余方法都挂到这个实例上,也就是实现了混合模式

class Axios {
    request(config) {}
    get(url,config){}
    post(url,data,condif){}
    // ... head options delete put patch
}

function createInstance() {
    const context = new Axios()
    const instance = Axios.prototype.request.bind(context)
    extend(instance, context)
    
    return instance  
}

axios调用过程

  1. 调用axios.request方法,该方法为bind返回的包裹函数,用于将request内部的this绑定到新建的Axios对象上
  2. 如果有请求拦截器调用拦截器
  3. 调用dispatchRequest
  4. 执行适配器adapter
  5. 调用dispatchXhrRequest,也
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值