为了账号安全,请及时绑定邮箱和手机立即绑定

关于iview Message多次提示的问题

关于iview Message多次提示的问题

米琪卡哇伊 2019-03-02 09:29:25
比方说刚进入某个页面的时候有3个请求,3个请求不需要确定先后顺序,有做token验证。若token过期,Message就会提示3次,然后跳转到登录页,如果我就想只提示1次,请问有什么比较好的处理方案么。尝试过等某个请求成功,然后做callBack处理,感觉不是特别好。
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

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

查看完整回答
反对 回复 2019-03-02
?
皈依舞

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);


查看完整回答
反对 回复 2019-03-02
  • 2 回答
  • 0 关注
  • 8836 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信