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())
})