From b3d7baadca62193940515ff74db10e0275a2b2a6 Mon Sep 17 00:00:00 2001 From: sunday <1114211821@qq.com> Date: Mon, 24 Aug 2020 10:07:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93=E8=B7=AF=E7=94=B1=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E6=89=93=E6=96=AD=20from?= =?UTF-8?q?=20=E8=B7=AF=E7=94=B1=E8=BF=98=E6=9C=AA=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E7=9A=84=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.js | 9 +++++++++ src/utils/request.js | 4 ++++ 2 files changed, 13 insertions(+) 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