vue axios 在页面切换时中断请求方法 ajax
程序员文章站
2022-04-06 19:20:06
如下所示:
vue.prototype.$ajax=axios;
const canceltoken = axios.canceltoken;
let ca...
如下所示:
vue.prototype.$ajax=axios; const canceltoken = axios.canceltoken; let cancel; let cancelajaxtext = '中断成功'; vue.prototype.post = function(url,data,loading){ var ajax = vue.prototype.$ajax({ method: 'post', url:url, data: data, canceltoken: new canceltoken(c => { //强行中断请求要用到的 cancel = c }) }).then(res =>res.data,res=>{ //中断请求和请求出错都会走这里,我这里用 cancelajaxtext 来区别 if(res.message == cancelajaxtext){ return {status : false,msg:cancelajaxtext} }else{ this.$confirm('登录过时,是否重新登录', '提示', { confirmbuttontext: '确定', cancelbuttontext: '取消', type: 'warning' }).then(() => { window.location.href = vue.prototype.url_head + '/'; }).catch(() => { }); } }) return ajax; };
接入 axios ,在post方法里加入 canceltoken 数据,在上面else中,中断请求和请求出错都会走那里,所以用一个msg来识别(因为接口返回中也有一个msg,统一一下);
以下是 中断请求的方法,放在 路由切换的监听 router.beforeeach 中 ,cancel 是中断的方法,在post 的 canceltoken 里面拿出来的
vue.prototype.cancelajax = function(){ //切换页面强行中断请求 router.beforeeach中用到 if(cancel){ cancel(cancelajaxtext); } }
router.beforeeach((to, from, next) => { <span style="white-space:pre;"> </span>vue.prototype.cancelajax() next(); });
调用post
<span style="white-space:pre;"> </span>this.post(this.ajaxurl + 'getcrtree',{ devaddr : this.changedata.devaddr, innerid : this.changedata.innerid, }).then(ret=>{ if(ret.status){ }else{ this.msg(ret.msg); } })
以上这篇vue axios 在页面切换时中断请求方法 ajax就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
下一篇: vue axios 二次封装的示例代码