const _cancelArr = []
export const cancelAll = () => {
_cancelArr.filter(item => {
item.fn()
return false
})
}
service.interceptors.request.use(
config => {
if (store.getters.token) {
if (isCheckTimeOut()) {
store.dispatch('user/logout')
router.push('/login')
return Promise.reject(new Error('token超时了'))
}
config.headers['Authorization'] = `Bearer ${store.getters.token}`
}
_cancelArr.filter(item => {
if (item.url === config.url && item.method === config.method) {
item.fn()
return false
}
return true
})
config.cancelToken = new Axios.CancelToken(cancel => {
_cancelArr.push({
url: config.url,
method: config.method,
fn: cancel
})
})
return config
},
error => {
console.log(error)
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
)
路由切换时,取消上一个页面所有请求
import { cancelAll } from '@/utils/request'
router.beforeEach(()=>{
cancelAll()
})