做企业网站需要准备什么材料,平台设计标准,合肥公司网站设计,永康企业网站建设公司文章目录 axios基本概念axios多种方式调用工具函数axios的拦截器如何实现#xff1f;用的设计模式是哪种#xff1f;axios如何实现取消请求#xff0c;和cancelToken如何使用 axios基本概念 axios是目前比较流行的一个js库#xff0c;是一个基于promise的网络数据请求库用的设计模式是哪种axios如何实现取消请求和cancelToken如何使用 axios基本概念 axios是目前比较流行的一个js库是一个基于promise的网络数据请求库主要用于发送网络数据请求从后台服务器上获取数据返回给前端。 优点特性
从浏览器中创建 XMLHttpRequests从 node.js 创建 http 请求支持 Promise API拦截请求和响应转换请求数据和响应数据取消请求自动转换 JSON 数据客户端支持防御 XSRF
axios多种方式调用
axios的常用几种方式就是
axios.get(url,config); url表示请求地址config表示配置对象axios.post(url,config)axios(config)
从上面可以看出axios既可以当函数axios()使用又可以当对象axios.get()使用原理 实质上axios是一个函数但函数也属于是一个对象所以同样可以向它身上追加属性和方法我们所使用的axios是通过createInstance这个函数创造出来的它简单实现的源码如下。 函数中实例化了AxiosAxios真正调用的是Axios原型链上的request方法因此导出的axios需要关联到request方法这里巧妙的通过bind函数进行关联生成关联后的instance函数同时指定它的调用上下文就是Axios的实例对象因此instance调用时也能获取到实例对象上的defaults和interceptors属性但是仅仅关联request还不够再通过extend函数将Axios原型对象上的所有get、post等函数扩展到instance函数上因此这也是我们才能够使用多种方式调用的原因所在。
function createInstance(defaultConfig) {// 1.实例化Axiosvar context new Axios(defaultConfig);// 2.注意这里bind是一个自定义函数返回一个函数{Axios.prototype.request.apply(context,args)}// 这里request基本是Axios的核心方法相当于将这些方法全部绑到了实例化的对象上var instance bind(Axios.prototype.request, context);// Copy axios.prototype to instance// 3.将Axios原型链上的其他方法也都绑定到instance上去这些方法的this会指向contxtutils.extend(instance, Axios.prototype, context);// Copy context to instance// 4.将contxt上的属性复制到instance上去utils.extend(instance, context);return instance;
}axios的构造函数AxiosAxios函数在原型对象上还挂载了request、get、post等函数但是get、post等函数最终都是通过request函数来发起请求的。而且request函数最终返回了一个Promise对象 因此我们才能通过then函数接收到请求结果。
class Axios {constructor(instanceConfig) {this.defaults instanceConfig;this.interceptors {request: new InterceptorManager(),response: new InterceptorManager()};}request() {}}一个是将默认配置保存到defaults另一个则是构造了interceptors拦截器对象 核心request函数主要作用
兼容多种传参方式(1. request(‘example/url’, { method: ‘post’ }); request({ url: ‘example/url’, method: ‘post’ }))合并参数通过promise的链式调用处理请求、响应拦截器以及发送请求等操作。
工具函数
bind将Axios原型上的方法挂载到instance上extend将构造函数 Axios.prototype 上的方法挂载到新的实例 instance 上然后将原型各个方法中的 this 指向 context
axios的拦截器如何实现用的设计模式是哪种
拦截器实现就只有一个属性用于保存拦截器及三个原型方法添加、移除、执行。
实例化axios后就可以调用use进行绑定拦截器需要注意的是在传递use方法的第一个参数时必须返回config保证下一个promise能获取到处理后的参数。 options是可选参数对象可传入两个属性(synchronous, runWhen)这么设计就是使用了责任链设计模式。
axios采用promise.resolve的方式将拦截器异步化。将所有请求拦截器放在请求方法之前unshift所有的响应拦截器放在后push。遍历所有的方法通过promise的then方法将所有方法放在一条链上。 责任链模式是一种行为设计模式 允许你将请求沿着处理者链进行发送。 收到请求后 每个处理者均可对请求进行处理 或将其传递给链上的下个处理者。 优点 你可以控制请求处理的顺序。单一职责原则。 你可对发起操作和执行操作的类进行解耦。开闭原则。 你可以在不更改现有代码的情况下在程序中新增处理者。 责任链模式执行的顺序是请求拦截器 - 发起请求 - 响应拦截器这其实就是一个链条上串起了三个职责。
axios如何实现取消请求和cancelToken如何使用
创建一个 CancelToken 的实例,它有一个 executor 函数,可以通过调用 executor 参数中的 cancel 函数来取消请求。在 axios 请求配置中指定 cancelToken 属性,将 CancelToken 实例传递进去。当我们需要取消请求时,调用 CancelToken 实例的 cancel() 方法即可取消对应的请求。axios 检测到配置的 cancelToken 被取消,就会取消掉这个请求,并在错误回调中返回一个 Cancel 错误。axios 内部会监听 cancelToken 实例的 cancel 信号,一旦触发就会跳出队列,取消对应请求的执行。
使用方法
import axios from axios;
const CancelToken axios.CancelToken;
let cancel;
axios.get(/user/12345, {cancelToken: new CancelToken(function executor(c) {// executor 函数接收一个 cancel 函数作为参数cancel c;})
});
// 取消请求
cancel(Operation canceled by the user.);
文章转载自: http://www.morning.tmjhy.cn.gov.cn.tmjhy.cn http://www.morning.rbjth.cn.gov.cn.rbjth.cn http://www.morning.zqnmp.cn.gov.cn.zqnmp.cn http://www.morning.pnmtk.cn.gov.cn.pnmtk.cn http://www.morning.dkfb.cn.gov.cn.dkfb.cn http://www.morning.zympx.cn.gov.cn.zympx.cn http://www.morning.litao4.cn.gov.cn.litao4.cn http://www.morning.zpjhh.cn.gov.cn.zpjhh.cn http://www.morning.gwqkk.cn.gov.cn.gwqkk.cn http://www.morning.chkfp.cn.gov.cn.chkfp.cn http://www.morning.djpzg.cn.gov.cn.djpzg.cn http://www.morning.xkqjw.cn.gov.cn.xkqjw.cn http://www.morning.hfxks.cn.gov.cn.hfxks.cn http://www.morning.xfcjs.cn.gov.cn.xfcjs.cn http://www.morning.yesidu.com.gov.cn.yesidu.com http://www.morning.dkzwx.cn.gov.cn.dkzwx.cn http://www.morning.seoqun.com.gov.cn.seoqun.com http://www.morning.gqfks.cn.gov.cn.gqfks.cn http://www.morning.psxwc.cn.gov.cn.psxwc.cn http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn http://www.morning.hjbrd.cn.gov.cn.hjbrd.cn http://www.morning.bttph.cn.gov.cn.bttph.cn http://www.morning.yrngx.cn.gov.cn.yrngx.cn http://www.morning.tyrlk.cn.gov.cn.tyrlk.cn http://www.morning.prprj.cn.gov.cn.prprj.cn http://www.morning.cjqqj.cn.gov.cn.cjqqj.cn http://www.morning.xzjsb.cn.gov.cn.xzjsb.cn http://www.morning.qgghr.cn.gov.cn.qgghr.cn http://www.morning.dnjwm.cn.gov.cn.dnjwm.cn http://www.morning.gtbjf.cn.gov.cn.gtbjf.cn http://www.morning.rxgnn.cn.gov.cn.rxgnn.cn http://www.morning.bsghk.cn.gov.cn.bsghk.cn http://www.morning.tnhmp.cn.gov.cn.tnhmp.cn http://www.morning.ymwny.cn.gov.cn.ymwny.cn http://www.morning.ctlzf.cn.gov.cn.ctlzf.cn http://www.morning.gwqcr.cn.gov.cn.gwqcr.cn http://www.morning.kqhlm.cn.gov.cn.kqhlm.cn http://www.morning.rsqpc.cn.gov.cn.rsqpc.cn http://www.morning.zqbrw.cn.gov.cn.zqbrw.cn http://www.morning.hwxxh.cn.gov.cn.hwxxh.cn http://www.morning.htbbp.cn.gov.cn.htbbp.cn http://www.morning.mcpdn.cn.gov.cn.mcpdn.cn http://www.morning.bfgpn.cn.gov.cn.bfgpn.cn http://www.morning.stwxr.cn.gov.cn.stwxr.cn http://www.morning.pxbky.cn.gov.cn.pxbky.cn http://www.morning.lwnwl.cn.gov.cn.lwnwl.cn http://www.morning.kgfsz.cn.gov.cn.kgfsz.cn http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn http://www.morning.fygbq.cn.gov.cn.fygbq.cn http://www.morning.nfbkz.cn.gov.cn.nfbkz.cn http://www.morning.txzmy.cn.gov.cn.txzmy.cn http://www.morning.pkrb.cn.gov.cn.pkrb.cn http://www.morning.zxfr.cn.gov.cn.zxfr.cn http://www.morning.yrdt.cn.gov.cn.yrdt.cn http://www.morning.c7622.cn.gov.cn.c7622.cn http://www.morning.pfgln.cn.gov.cn.pfgln.cn http://www.morning.thwhn.cn.gov.cn.thwhn.cn http://www.morning.tlbhq.cn.gov.cn.tlbhq.cn http://www.morning.kycwt.cn.gov.cn.kycwt.cn http://www.morning.gbljq.cn.gov.cn.gbljq.cn http://www.morning.kqqk.cn.gov.cn.kqqk.cn http://www.morning.qmzwl.cn.gov.cn.qmzwl.cn http://www.morning.addai.cn.gov.cn.addai.cn http://www.morning.lmqw.cn.gov.cn.lmqw.cn http://www.morning.djpzg.cn.gov.cn.djpzg.cn http://www.morning.yckrm.cn.gov.cn.yckrm.cn http://www.morning.bpmdh.cn.gov.cn.bpmdh.cn http://www.morning.cndxl.cn.gov.cn.cndxl.cn http://www.morning.mypxm.com.gov.cn.mypxm.com http://www.morning.xqspn.cn.gov.cn.xqspn.cn http://www.morning.msgcj.cn.gov.cn.msgcj.cn http://www.morning.rjkfj.cn.gov.cn.rjkfj.cn http://www.morning.kmbgl.cn.gov.cn.kmbgl.cn http://www.morning.grynb.cn.gov.cn.grynb.cn http://www.morning.wmpw.cn.gov.cn.wmpw.cn http://www.morning.psxcr.cn.gov.cn.psxcr.cn http://www.morning.hwprz.cn.gov.cn.hwprz.cn http://www.morning.kxmyj.cn.gov.cn.kxmyj.cn http://www.morning.jyzqn.cn.gov.cn.jyzqn.cn http://www.morning.eshixi.com.gov.cn.eshixi.com