首页 > 移动平台 > 详细

vue axios路由跳转取消所有请求

时间:2019-08-28 11:09:11      阅读:690      评论:0      收藏:0      [点我收藏+]

直接上干货

第一步: axios 怎么取消:

const CancelToken = axios.CancelToken;
let cancel;
axios.get(‘/user/12345‘, {
cancelToken: new CancelToken(function executor(c) {
// An executor function receives a cancel function as a parameter
cancel = c;
})
});

第二步: 这是取消一个axios 如果是多个呢?那么我们就需要有个地方给存下来
vuex
state: {
// axios取消请求
axiosPromiseCancel: [],
}
第三步: axios 拦截器axios.js
import store from ‘./store‘;
const CancelToken = axios.CancelToken;

let cancel;
axios.interceptors.request.use(config=>{
// 这个是 取消重点
config.cancelToken = new CancelToken((cancel) => {
    store.state[‘axiosPromiseCancel‘].push(cancel);
  });
return config;
});
axios.interceptors.response.use(res=>{
// do something...
},error=>{
if (axios.isCancel(error)) {
// 为了终结promise链 就是实际请求 不会走到.catch(rej=>{});这样就不会触发错误提示之类了。
return new Promise(() => {});
}else{
return Promise.reject(error)
}});

第四步: 就是在router 里做取消动作了 router.js

import store from ‘./store‘;
router.beforeEach((to, from, next) => {
    store.state[‘axiosPromiseCancel‘].forEach(e=>{
e && e()
});
store.state[‘axiosPromiseCancel‘] = [];

})

vue axios路由跳转取消所有请求

原文:https://www.cnblogs.com/zhaofeis/p/11422777.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!