论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
移动端开发
›
IOS
›
axios 实现哀求重试
axios 实现哀求重试
农民
金牌会员
|
2024-8-8 22:44:34
|
显示全部楼层
|
阅读模式
楼主
主题
806
|
帖子
806
|
积分
2418
前景提要:
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
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
农民
金牌会员
这个人很懒什么都没写!
楼主热帖
数据库入门
肝了五万字把SQL数据库从基础到高级所 ...
【R语言数据科学】(十二):有趣的概 ...
CentOS 7.9 安装 rocketmq-4.9.2
Midjourney 注册 12 步流程教学
消息队列常见的使用场景
flume基本安装与使用
java反射大白话
Python分析睡眠数据
每日算法之数组中的逆序对
标签云
挺好的
服务器
快速回复
返回顶部
返回列表