bug
直接使用source的token来cancel请求,会导致这样的问题:所有的请求都被cancel掉了!这很明显不符合我们的要求:跳转路由的时候清除掉上一个页面的请求,当前页面的请求应保留。
解决办法
在拦截器中为每一个请求new一个token,然后存在store里面。在路由钩子中调用相应的cancel方法就好了。
interceptors (instance) {
instance.interceptors.request.use(config => {
config.cancelToken = new axios.CancelToken(cancel => {
store.dispatch('status/saveRequestQueue', cancel)
})
return config
}, error => {
this.errorHandler('请求失败 ' + error.toString())
})
1694





