• 技术文章 >web前端 >js教程

    vue axios页面切换时怎么中断请求

    php中世界最好的语言php中世界最好的语言2018-03-28 13:41:11原创2494
    这次给大家带来vue axios页面切换时怎么中断请求,vue axios页面切换时中断请求的注意事项有哪些,下面就是实战案例,一起来看一下。

    如下所示:

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

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    JS的深浅拷贝使用详解

    Vue中method与computed的区别

    以上就是vue axios页面切换时怎么中断请求的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:axios 中断 怎么
    上一篇:js如何直接获取网页中图片地址 下一篇:node.js怎样通过axios实现网络请求
    大前端线上培训班

    相关文章推荐

    • innerhtml是jquery方法么• javascript怎么设置标签的背景颜色• jquery select 不可编辑怎么办• javascript 怎么将时间转毫秒• 浅谈怎么利用node提升工作效率

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网