比方说刚进入某个页面的时候有3个请求,3个请求不需要确定先后顺序,有做token验证。若token过期,Message就会提示3次,然后跳转到登录页,如果我就想只提示1次,请问有什么比较好的处理方案么。尝试过等某个请求成功,然后做callBack处理,感觉不是特别好。
2 回答
皈依舞
TA贡献1851条经验 获得超3个赞
楼主,可以借用 axios 提供的 cancel token。 贴下具体实现的代码:
+ const CancelToken = axios.CancelToken;+ const pending = [];service.interceptors.response.use(
response=>{
const res=response.data;
return response.data;
},err=>{
console.log(err);
let errCode=err.response.data.errCode;
let errMsg=err.response.data.errMsg;
if(errCode===500&&errMsg=='Invalid token'){+ // 登录超时,接口请求多次,导致弹框会多次出现,方案:只弹一次+ while (pending.length > 0) {+ pending.pop()('请求中断');+ }
...
}
else if(errCode===500&&errMsg=='No authority'){
// 登录超时,接口请求多次,导致弹框会多次出现,方案:只弹一次+ while (pending.length > 0) {+ pending.pop()('请求中断');+ }
...
}
}
)+ // axios 相关配置修改+ const defaultConfig = {}+ defaultConfig.cancelToken = new CancelToken(function executor(c) {+ // An executor function receives a cancel function as a parameter+ pending.push(c);+ });axios(defaultConfig);- 2 回答
- 0 关注
- 8868 浏览
添加回答
举报
0/150
提交
取消
