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

曹县网站建设启博学院的功能介绍

曹县网站建设,启博学院的功能介绍,怎么用自己主机做网站,安徽省教育基本建设学会网站这两个功能都是用拦截器实现。 前景提要#xff1a; ts 简易封装 axios#xff0c;统一 API 实现在 config 中配置开关拦截器 全局错误处理 在构造函数中#xff0c;添加一个响应拦截器即可。在构造函数中注册拦截器的好处是#xff0c;无论怎么实例化封装类#xff0c… 这两个功能都是用拦截器实现。 前景提要 ts 简易封装 axios统一 API 实现在 config 中配置开关拦截器 全局错误处理 在构造函数中添加一个响应拦截器即可。在构造函数中注册拦截器的好处是无论怎么实例化封装类这个错误拦截器都会被注册进实例。 其中有个注意点就是请求取消。取消请求会导致响应 promise 状态为 rejected这样就会触发响应拦截器的 onRejected 回调。因此要单独处理请求的请求情况将它与请求错误区分开来。 class HttpRequest {private readonly instance: AxiosInstance;constructor(config: MyAxiosRequestConfig) {this.instance axios.create(config);// axios http 错误处理超出 2xx 范围的 http 状态码都会触发该函数this.instance.interceptors.response.use(null, (error: AxiosError) {// 手动取消请求会导致“错误”触发if (error.message canceled) alert(请求取消成功);const { response } error;// 1. 请求超时 网络错误单独判断因为没有 responseif (error.message.indexOf(timeout) ! -1) alert(请求超时请您稍后重试);if (error.message.indexOf(Network Error) ! -1) alert(网络错误请您稍后重试);// 2. 根据 http 服务器响应的错误状态码做不同的处理if (response) {switch (response.status) {case 404:alert(你所访问的资源不存在);break;case 500:alert(服务异常);break;default:alert(请求失败);}}// 3. 服务器结果都没有返回(可能服务器错误可能客户端断网)断网处理:也可以跳转到断网页面if (!window.navigator.onLine) alert(服务器错误或者无网络); // router.replace(/500);throw error;});} }取消请求 axios 取消请求的方式 axios 取消请求有两种 api。一种是 AbortController一种是古老的 CancelToken 已经被弃用了。 AbortController - Web API 接口参考 | MDN 我们主要使用第一种方式 实例化取消控制器接口控制器对象有一个信号标记signal将该标记配置给 axios 同名的 signal配置控制器对象调用abort()方法就能取消被标记了的请求。 const controller new AbortController();axios.get(/foo/bar, {signal: controller.signal }).then(function(response) {//... }); // 取消请求 controller.abort()封装取消请求功能 取消请求也是个基础功能因此和全局错误拦截器一样在构造函数中注册拦截器。 取消请求 为每一个请求生成一个控制器 controller并添加 signal维护一个 map以 url 为 key对应的 controller 为 value要取消哪个请求就通过 url获取它的 controller 来取消在全局响应拦截器中给所有请求添加 signal并在请求结束后从 map 中剔除该 url 对应的 controller 封装类暴露两个方法 取消全部请求根据 url 取消请求 class HttpRequest {private readonly instance: AxiosInstance;private readonly abortControllerMap: Mapstring, AbortController;constructor(config: MyAxiosRequestConfig) {this.instance axios.create(config);// 为每个请求都生成一个 signal并以 url 为 key 添加入 mapthis.instance.interceptors.request.use(config {// 如果具体方法中设置了 signal这里就不再添加避免覆盖。if (config.signal) return config;const controller new AbortController();config.signal controller.signal;const url config.url || ;this.abortControllerMap.set(url, controller);return config;},(err: AxiosError) {throw err;});// 响应完从map中去除 urlthis.instance.interceptors.response.use(res {const url res?.config.url || ;this.abortControllerMap.delete(url);return res;},(err: AxiosError) {const url err?.config?.url || ;this.abortControllerMap.delete(url);throw err;});}/*** 取消全部请求*/cancelAllRequest() {for (const [, controller] of this.abortControllerMap) {controller.abort();}this.abortControllerMap.clear();}/*** 取消指定的请求* 并发上传文件的url通常是一样的通过url取消请求会取消所有上传操作故此方法不宜用来取消上传请求* param url 待取消的请求URL*/cancelRequest(url: string | string[]) {const urlList Array.isArray(url) ? url : [url];urlList.forEach(_url {this.abortControllerMap.get(_url)?.abort();this.abortControllerMap.delete(_url);});} }
http://www.lakalapos1.cn/news/24700/

相关文章:

  • 买建筑公司网站企业网站的特点是
  • 网站建设中系统实现前端做一个页面多少钱
  • 太原网站设计排名深圳网站建设新闻
  • 手机网站怎么做推广应税服务网站开发开票
  • 图解asp.net网站开发实战南通网站建设系统方案
  • wordpress设置网站做优化一般几个字
  • 网站建设启动资金预算中国建设局网站首页
  • 三门峡网站建设价格商标设计网站排行
  • 手机手机网站开发seo关键词排名优化怎么做
  • 课程网站开发卷宗wordpress 英文改中文
  • 江苏城乡建设学院网站商务网站网络环境设计
  • 网站制作成都wordpress站点logo
  • 俄文网站策划wordpress微商
  • 网站推广服务网站连锁微信文件传输助手网页版
  • 网站规划与建设进度潜山云建站网站建设
  • 做网站 做应用百度seo推广计划类型包含
  • m 外贸网站简述网站建设的具体步骤
  • 福建建设资格管理中心网站wordpress的系统
  • 付费推广网站中国作文网
  • 郑州专业手机网站制作网站建设是干什么的
  • 企石网站仿做网站模板怎么修改教程
  • 无锡建网站动漫设计与制作就业前景怎么样
  • 物流网站毕业设计公司网站内容规划
  • 网站建设的合理建议wordpress 不显示中文图片
  • 网站开发费用属于哪种无形资产直播软件平台
  • 广州建网站培训网站ping值
  • 嘉兴网站推广公司北京网站制作西安
  • 吴江企业网站制作dw做网站字体 别人电脑显示
  • 大企业网站建设方案广西城乡建设厅证件查询
  • 万源网站建设哈尔滨网站推广服务