您好,欢迎访问一九零五行业门户网

vue中通过axios实现在页面切换时中断请求方法

下面我就为大家分享一篇vue axios 在页面切换时中断请求方法 ajax,具有很好的参考价值,希望对大家有所帮助。
如下所示:
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); } })
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
settimeout时间设置为0详细解析
js实现的集合去重,交集,并集,差集功能示例
bootstrap 中data-[*] 属性的整理
以上就是vue中通过axios实现在页面切换时中断请求方法的详细内容。
其它类似信息

推荐信息