cancelToken去掉之后就不会因为取消其他接口,而影响到所有接口了。目前看到网上给出的方案都会取消所有接口(我自己做了重置)
let urlArray = []
// request拦截器
service.interceptors.request.use(config => {
// 取消请求核心
config.cancelToken = source.token
// 如果在禁止请求的名单中检测到有该接口,立刻取消请求
if (urlArray.length > 0 && urlArray.includes(config.url)) {
source.cancel();
console.log('取消请求');
} else {
// 检测没有问题,将当前接口地址移入黑名单
urlArray.push(config.url)
}
return config
}, error => {
Promise.reject(error)
})
// 响应拦截器
service.interceptors.response.use(res => {
// 将请求结束的接口移出禁止黑名单
urlArray.forEach((url, i) => {
if (url === res.config.url) {
urlArray.splice(i, 1)
}
})
// 这里省略处理返回标识
return res.data
})