axios的cancelToken在拦截器里使用后,是不是需要去掉?

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
})
阅读 960
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题