比方说刚进入某个页面的时候有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 关注
- 8836 浏览
添加回答
举报
0/150
提交
取消