关于iview Message多次提示的问题

比方说刚进入某个页面的时候有3个请求,3个请求不需要确定先后顺序,有做token验证。若token过期,Message就会提示3次,然后跳转到登录页,如果我就想只提示1次,请问有什么比较好的处理方案么。

尝试过等某个请求成功,然后做callBack处理,感觉不是特别好。


米琪卡哇伊
浏览 8837回答 2
2回答

隔江千里

1、可以选择防抖,延时处理token验证。2、添加一个全局变量(或者vuex),标记是否已进行token验证,如果有,则不再进行提醒

皈依舞

楼主,可以借用 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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5