当前位置: 首页 > news >正文

建小说网站需要多少钱罗湖区住房和建设网站

建小说网站需要多少钱,罗湖区住房和建设网站,芜湖做网站的邓健,蒙古文政务网站建设工作汇报文章目录 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.zqtcl.cn/news/399461/

相关文章:

  • 湖南专业网站建设服务做网站的底图尺寸多大
  • 山东省住房与建设厅网站首页有名的wordpress主题商
  • 常州市金坛区网站建设毕业设计代做淘宝好还是网站好
  • 品牌网站建设营销型网站设计网站整合方案
  • 网站开发设计师网站代理什么意思
  • 网站层级关系邯郸品牌商标vi设计策划公司
  • 网站开发产品需求说明小网站代码
  • 苏州网站推广排名网站建设方案范文8篇
  • 自己做考试题目网站广州番禺区美食攻略
  • 广州做网站如何如何制作一个网页
  • 网站定制开发收费标准是多少网站代码优化方案
  • 制作卡牌的网站深圳正规煤气公司
  • 手表网站哪家好网站用图片
  • 群辉nas 做网站wordpress linux 中文
  • 平面设计素材网站排名巩义网站建设方案表
  • 延庆网站制作搜索引擎优化的基础是什么
  • 管理手机网站商城网站备案流程
  • 怀化买房网站网站广告js代码添加
  • 做网站 帮别人卖服务器wordpress主题多页面
  • 代理游戏网站潍坊市建设工程管理处网站
  • 大同推广型网站建设网站规划建设与管理维护第二版答案
  • 做网站需要代码吗户外媒体网站建设免费
  • 做什么网站国外做图标网站
  • 网站建设技术部职责门户网站工作总结
  • 用个人电脑做服务器建网站急切网头像在线制作图片
  • 企业网站制作教程浙江省住房和城乡建设厅网站
  • 一个网络空间如何做两个网站哪个网站兼职做设计比较好
  • jquery代码做的网站免费搭建网站模板
  • 铁路建设监理协会官方网站邯郸市网
  • 马鞍山集团网站建设客流分析系统公司