一、取消全部请求
1、创建axios实例时添加cancelToken方法
const request = axios.create({
// API 请求的默认前缀
baseURL: process.env.VUE_APP_BASE_API,
cancelToken: new axios.CancelToken(function (c) {
// 将c保存在vuex的cancelAxios中
store.dispatch('setCancelAxios', c)
})
// timeout: 30000 // 请求超时时间
})
2、在vuex里面添加方法
state: { cancelAxios: null // 终止axios请求 }, mutations: { setCancelAxios (state, n) { state.cancelAxios = n console.log('111') } }, actions: { setCancelAxios ({ commit }, n) { commit('setCancelAxios', n) console.log('22') } },
3、在页面使用,此时state里面cancelAxios是一个方法,调用该方法
this.$store.state.cancelAxios('请求终止了')
二、取消单个请求
1、在单个请求的接口里面添加 cancelToken属性
export function getArrearsCustomer (cancelToken) { return request({ url: '路径', method: 'post', cancelToken }) }
2、在调用时传递参数 在需要终止的时候调用 this.CancelToken()终止
getArrearsCustomer( new axios.CancelToken((c) => { this.CancelToken = c }) ).then((res) => { console.log('返回数据', res) }) this.CancelToken('这一个请求终止了')