VUE路由跳转前清除所有请求
const CancelToken = axios.CancelToken;
axios.interceptors.request.use(
config => {
config.cancelToken = new CancelToken(function executor(c) {
pending.push({
url: axios.defaults.baseURL + config.url,
f: c
});
store.commit("pushToken", {
cancelToken: c });
});
return config;
},
error => {
return Promise.reject(error).catch(err => {
});
}
);
import Vuex from 'vuex';
const state = {
cancelTokenArr:[]
};
const mutations = {
pushToken(state,payload){
state.cancelTokenArr.push(payload.cancelToken);
},
clearToken({
cancelTokenArr}){
cancelTokenArr.forEach(
item=>{
if(item){
item();
}
}
)
cancelTokenArr = [];
},
emptyToken(state,payload){
state.cancelTokenArr = [];
}
};
const actions = {
};
export default new Vuex.Store({
state,
actions,
mutations
});
import Router from "vue-router";
import store from "@/store";
import {
routerMode } from "@/public/env-conf";
import Portal from "./portal-router";
const router = new Router({
mode: routerMode,
routes: [
...Portal,
]
});
router.beforeEach((to, from, next) => {
store.commit("clearToken");
store.commit("emptyToken");
} else {
next();
}
});
export default router;