axios 中取消请求

axios 取消请求

  const CancelToken = axios.CancelToken // 获取CancelToken对象
  let { token, cancel } = CancelToken.source() // source 方法返回 token 和 cancel
  // token 是个标识  cancel是个方法,把同一次返回的token所指定的请求取消掉
   axios.get('url',{cancelToken: token}) //  把标识token指定到请求上
   axios.post('url',{},{cancelToken: token})
   cancel(message) // 取消请求

source 方法

tupain source 方法
  const CancelToken = axios.CancelToken;
  let cancel;
  axios.get('url', {
    cancelToken: new CancelToken(function executor(c) {
      cancel = c;
  })
});
cancel();
tupain 使用

新的取消方法 AbortController

// 就换了写发
const {signal,abort} = new AbortController()
axios.get('url', {signal: signal})
abort() // 取消

取消请求: 取消服务器还没接收到的请求, 取消成功会触发error, 服务器接收到的请求则不能取消,取消无效。(网络不好的时候请求耗时比较长,接口pending 一般是后台的处理等待中)

primose 取消请求

  • Promise.all 成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败状态的值
  • Promise.race 看谁执行的最快,返回最快的那个结果,不管结果本身是成功状态还是失败状态

基本思路就是,我们给每一个请求身边都放一个Promise对象,这个对象就是一颗炸弹,将他们一起放到Promise.race里面,当我们需要取消请求的时候就可以点燃这颗炸弹。

tupain 使用

使用promise的方法,仅仅只是通过改变promise的状态来阻止响应结果的接收,服务还是照常发送的

posted @ 2021-01-26 23:16  雨天。我  阅读(131)  评论(0)    收藏  举报