下面我就为大家分享一篇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实现在页面切换时中断请求方法的详细内容。