当前位置: 首页 > 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.pierceye.com/news/227871/

相关文章:

  • 纪检监察网站建设 讲话制作书签的感受心得
  • 宁波网站建设公司优选亿企邦上海网站快速备案
  • 贵阳有做网站的公司吗微信营销软件免费版
  • 打开网站乱码怎么做河南平台网站建设
  • 物流网站源代码安平县网站建设
  • 自助服务器网站建设修改wordpress的库名
  • 惠州做网站乐云seo网站建设如何插音乐
  • 自媒体图片素材网站东莞网站建设推广技巧
  • 新浪网站是什么程序做的六安网站关键词排名优化地址
  • 手机网站大全123456镇江手机网站建设
  • 企业网站模板下载哪家公司强服装设计就业前景如何
  • 婚纱网站源代码网站制作专业的公司
  • 公司经营范围 网站开发网络工程好就业吗
  • 企业网站建设与管理试题wordpress设置页面访问权限
  • 中国顺德手机网站设计安居客做网站
  • 网站运营的含义百度地图轨迹导航
  • 网站开发时创业中文网站模板
  • 男人最爱的做网站网站建设合作合同范文
  • 我和你99谁做的网站做润滑油网站图片
  • 基于wordpress门户网站wordpress可以自己写代码吗
  • 自己做发卡网站wordpress搬家出问题
  • 网站建设数据库搭建秦皇岛市属于哪个省
  • 网站建设怎样找客户辽宁网站定制企业
  • 建设工程项目管理网站上海it公司
  • 网站运营需要 做哪些工作做网站需要了解的知识
  • 旅游去过的地方可做标识网站百度一下网页入口
  • 做ps找图的网站有哪些法与家国建设征文网站
  • 途途外贸企业网站管理系统aspnet网站模板
  • 网站建设企业网站常用参数
  • 深圳市建设工程质量检测网站网站建设公司 待遇