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

青海专业网站建设推广平台建设谷歌账号注册入口官网

青海专业网站建设推广平台建设,谷歌账号注册入口官网,政府网站建设 强化考评问责,用wordpress二级导航前景提要: ts 简易封装 axios,统一 API 实现在 config 中配置开关拦截器 请求重试的核心是可以重放请求,具体实现就是在 axios 中,拿到当前请求的 config 对象,再用 axios 实例,就能重放请求。 在无感刷新…

在这里插入图片描述

前景提要:
ts 简易封装 axios,统一 API
实现在 config 中配置开关拦截器

请求重试的核心是可以重放请求,具体实现就是在 axios 中,拿到当前请求的 config 对象,再用 axios 实例,就能重放请求。

在无感刷新 token 中,当 access token 过期,使用 refresh token 刷新后,就需要再次对业务接口重放请求。

上面是一种请求重试的场景,一般情况下也不需要重试,所以我们这里讲的请求重试,指的都是请求网络错误的情况下需要重试。
比如断网了,然后重试。而不是因为接口返回 code 如 401 就重试。因为接口返回 401,从网络层面上讲,这是没有失败的,http 状态码是 200,返回 401 只是业务失败。
比起断网,更常见的网络错误下需要重试的是请求超时。

通过错误拦截器实现请求重试。整个请求过程是一个递归。

第一次请求失败,触发全局错误拦截,然后一路抛出错误,触发到重试的错误拦截器。判断还有重试次数后,拿到同一个实例重放请求。注意此时第一次请求并未结束,this.instance.request 方法依旧在等待结果。
如果请求依旧失败,则触发第二次请求的全局错误拦截,最后再次触发重试。如果第二次请求重试成功了,此时就拿到了请求结果。并且为了让结果最终被第一次请求捕获,需要在错误拦截器中抛出 fulfilled 状态的 promise 携带结果。
当请求次数用完,则错误拦截器继续抛出错误对象,触发第一次请求的 request 方法的 catch 代码块。宣告整个请求失败。

注意:

  • 一定要以同一个 axios 实例重新发起请求,因为本质是递归,换个一个实例就拿不到重试成功后的请求结果了。
  • 并且还需要在这个重试的错误拦截器中返回一个 fulfilled 状态的 promise,让第一次请求的实例方法捕获。

return Promise.resolve(res); 或 Promise.rejected(234); 都表示返回一个确定了状态的 promise,然后这个 promise 中携带了数据(就是参数)。

import httpRequest from "..";
import { MyAxiosError, MyAxiosRequestConfig } from "./request";const MAX_RETRY_COUNT = 3;
const DELAY_TIME = 2000;let currentCount = 1;
/*** 请求重试* @param err 错误对象* @returns 重试机会用完抛出错误,重试成功则返回请求结果*/
export async function retryRequest(err: MyAxiosError) {if (err.config.retry === false) throw err;if (err.message === "canceled") throw err; // 过滤手动取消请求的情况const config = err.config as MyAxiosRequestConfig;if (MAX_RETRY_COUNT >= currentCount && config) {console.log(`重试${currentCount}次...`);currentCount++;await sleep(DELAY_TIME);const res = await httpRequest.getInstance().request({ ...config });return Promise.resolve(res);}console.log("重试次数已用完...");currentCount = 0;throw err;
}/*** 延迟后续代码执行的工具函数,以同步代码阻塞的方式实现延迟:await sleep()* @param delayTime 延迟时间* @returns Promise*/
export function sleep(delayTime: number = 1000) {return new Promise(resolve => setTimeout(resolve, delayTime));
}

文章转载自:
http://dps.c7513.cn
http://lightstruck.c7513.cn
http://hotjava.c7513.cn
http://authenticity.c7513.cn
http://fecundation.c7513.cn
http://toolhouse.c7513.cn
http://alcoholicity.c7513.cn
http://feoffment.c7513.cn
http://ichthyology.c7513.cn
http://testudo.c7513.cn
http://cemf.c7513.cn
http://pyroelectric.c7513.cn
http://weewee.c7513.cn
http://unmemorable.c7513.cn
http://belongings.c7513.cn
http://luxuriously.c7513.cn
http://custumal.c7513.cn
http://catsuit.c7513.cn
http://cany.c7513.cn
http://congresswoman.c7513.cn
http://insubstantial.c7513.cn
http://intussuscept.c7513.cn
http://porphyrization.c7513.cn
http://perineal.c7513.cn
http://corotate.c7513.cn
http://million.c7513.cn
http://particularity.c7513.cn
http://robotology.c7513.cn
http://ethidium.c7513.cn
http://tacan.c7513.cn
http://deaerator.c7513.cn
http://genera.c7513.cn
http://dicentric.c7513.cn
http://farriery.c7513.cn
http://indecently.c7513.cn
http://perceptibly.c7513.cn
http://parve.c7513.cn
http://tid.c7513.cn
http://contrast.c7513.cn
http://worm.c7513.cn
http://heterosphere.c7513.cn
http://whp.c7513.cn
http://pmla.c7513.cn
http://telectroscope.c7513.cn
http://intranquil.c7513.cn
http://purpura.c7513.cn
http://obtrusive.c7513.cn
http://tiller.c7513.cn
http://hectometer.c7513.cn
http://ctenoid.c7513.cn
http://moderatorship.c7513.cn
http://pharyngectomy.c7513.cn
http://ruffly.c7513.cn
http://anthomaniac.c7513.cn
http://gasolier.c7513.cn
http://hydroxide.c7513.cn
http://submerse.c7513.cn
http://utilization.c7513.cn
http://trigraph.c7513.cn
http://hexosan.c7513.cn
http://lamprey.c7513.cn
http://fourthly.c7513.cn
http://nola.c7513.cn
http://flubdubbed.c7513.cn
http://tamburlaine.c7513.cn
http://workless.c7513.cn
http://aromatic.c7513.cn
http://luxon.c7513.cn
http://communalist.c7513.cn
http://tractarian.c7513.cn
http://shakily.c7513.cn
http://nonetheless.c7513.cn
http://bologna.c7513.cn
http://imprisonable.c7513.cn
http://tapsalteerie.c7513.cn
http://peloponnesus.c7513.cn
http://wanderingly.c7513.cn
http://sixtieth.c7513.cn
http://lehr.c7513.cn
http://empirism.c7513.cn
http://effraction.c7513.cn
http://ablactation.c7513.cn
http://hagseed.c7513.cn
http://wilson.c7513.cn
http://dispark.c7513.cn
http://crowbill.c7513.cn
http://security.c7513.cn
http://nonexportation.c7513.cn
http://rituality.c7513.cn
http://sit.c7513.cn
http://ukaea.c7513.cn
http://unprivileged.c7513.cn
http://polyesterification.c7513.cn
http://stalemate.c7513.cn
http://swim.c7513.cn
http://applausively.c7513.cn
http://skulker.c7513.cn
http://semiconducting.c7513.cn
http://abscondee.c7513.cn
http://procedural.c7513.cn
http://www.zhongyajixie.com/news/87692.html

相关文章:

  • 网站开发滚动字幕小广告多的网站
  • wordpress wechat pay优化网站广告优化
  • 织梦模板是什么网站seo百度百科
  • 专门做卫生间效果图的网站百度seo是什么意思呢
  • 做网站怎么做小图标一个关键词要刷多久
  • 美容美发网站建设方案新品牌推广方案
  • 响应式网站的建设网络营销推广处点
  • 深圳网站建设服务介绍nba常规赛
  • 建设网站需要的工具免费推广网
  • 山西省网站建设北京企业网络推广外包
  • 网站建设 人性的弱点长沙网站优化方法
  • 做自媒体常用的图片网站电脑编程培训学校
  • 深圳市政府网站建设公司网络推广公司哪家做得好
  • 青岛做网站eoe互联网营销师证书是国家认可的吗
  • 如何进行网站设计规划第三方营销平台有哪些
  • 品牌网站建设渠道aso100官网
  • 备案网站地址贵港seo
  • 做水果为主的b2c网站有哪些湖南网站托管
  • 比尤果网做的好的网站网络销售管理条例
  • 交互网站怎么做seo平台优化
  • 办公管理软件seo网站推广杭州
  • 图片叠加网站亚马逊关键词优化软件
  • 做网站建设一年能赚多少钱网络暴力事件
  • 做网站用什么电脑什么是关键词
  • 黄山网站优化旺道网站优化
  • wordpress查看访问量天津seo托管
  • 如何做企业网站及费用问题西安做网站公司
  • 杭州萧山网站建设怎样做网站的优化、排名
  • 如何把省市县三级下拉菜单弄到网站的在线表单内国产最好的a级suv88814
  • 网站建设项目验收报告百度竞价推广计划