diff --git a/src/router/index.js b/src/router/index.js index 12a84e3..a980c54 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -21,6 +21,15 @@ const createRouter = () => const router = createRouter() + // 当路由切换的时候,打断 from 路由还未完成的请求 +import request from '@/utils/request' +router.beforeEach((to, from, next) => { + var requestSource = request.requestSource + requestSource.cancel && requestSource.cancel() + requestSource = request.CancelToken.source() + next() +}) + // Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465 export function resetRouter() { const newRouter = createRouter() diff --git a/src/utils/request.js b/src/utils/request.js index 6788f91..9264630 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -11,8 +11,12 @@ const service = axios.create({ }) // request拦截器 request interceptor +// 定义 cancelToken +var requestSource = { token: null, cancel: null } service.interceptors.request.use( config => { + // 插入 cancelToken 到配置 + config.cancelToken = requestSource.token // 不传递默认开启loading if (!config.hideloading) { // loading