大致思路是这样子的,利用promise的链式调用,对ajax进行封装,请求结果通过then方法回传给axios,下面进行了逐步分析,不对的地方还希望大家指出。

准备Axios构造函数
构造函数主要是用来存储配置信息,default:用来存储axios传递的配置信息(如图一),interceptors:进行请求拦截(如图二),get/post/request:发送请求,这里的get/post都是依赖于request方法
function Ajax(){
this.default = null;
this.interceptors = {
request: new InterceptorManger(),
response: new InterceptorManger()
}
}
Ajax.prototype.request = function(config){
this.default = config;
}
Ajax.prototype.get = function(config){
return Ajax.prototype.request(Object.assign({},{method:'get'},config));
}
Ajax.prototype.post = function(){
return Ajax.prototype.request(Object.assign({},{method:'post'},config));
}
准备一个createInstance函数,函数的属性和方法都和Ajax实例一样
这里有人会问,为什么要准备一个createInstance函数?直接使用Ajax实例它不好吗?如果是这样的话,它就不符合AXIOS源码的设计理念了,作者是

本文解析了axios的构造函数、createInstance、request函数、InterceptorManger请求拦截和CancelToken取消请求的功能。通过promise链式调用封装ajax,实现请求拦截、响应拦截及请求取消等特性。
最低0.47元/天 解锁文章
1323

被折叠的 条评论
为什么被折叠?



