vue切换页面取消未完成接口请求

首先思路:

页面A请求接口axios1 -->
axios创建CancelToken对象保存请求至store变量CancelTokenArr -->
当切换至页面B -->
进入全局路由守卫调用vuex的清除CancelTokenArr方法 -->
遍历CancelTokenArr清除

axios:

import store from '../store'
let cancelTokenArr=[] //储存cancel token
// request拦截器
service.interceptors.request.use(
  config => {
    if (store.getters.token) {
        config.headers['X-Token'] = getToken()
        // 在发送请求设置cancel token
        config.cancelToken = new axios.CancelToken(cancel => {
            store.commit('PUSH_CANCEL', {
                cancelToken: cancel
            })
        })
    }
    return config
  },
  error => {
    console.log(error) // for debug
    Promise.reject(error)
  }
)

 vuex

const axios = {
    state: {
        cancelTokenArr: []
    },

    mutations: {
        PUSH_CANCEL(state, payload){
            state.cancelTokenArr.push(payload.cancelToken);
        },
        
        CLAER_CANCEL({cancelTokenArr}){
        
            cancelTokenArr.forEach(item => {
               item('路由跳转取消请求');
            });
        
            cancelTokenArr = [];
        }
    }
}

export default user

router

import store from './store'
router.beforeEach((to, from, next) => {
    store.commit('CLAER_CANCEL'); // 取消请求
    next()
})

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值