axios 取消请求

直奔主题吧,首先看一下官网的例子一共两个方法
方法1、cancel token的形式

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('/user/12345', {
  cancelToken: source.token
}).catch(function(thrown) {
  if (axios.isCancel(thrown)) {
    console.log('Request canceled', thrown.message);
  } else {
     // 处理错误
  }
});

axios.post('/user/12345', {
  name: 'new name'
}, {
  cancelToken: source.token
})

// 取消请求(message 参数是可选的)
source.cancel('Operation canceled by the user.');

理解一下这个方法,就是将cancelToken作为一个参数传到请求里面,然后定位到这个请求。
第一次尝试这个方法的时候无论如何也没成功,当时以为只要有这个参数就可以取消请求,其实取消操作是source.cancel()
当时把source.cancel('Operation canceled by the user.');认为是设置返回参数的函数,实际不然,这就是执行取消的方法
方法2、通过传递一个executor函数到CancenToken的构造函数来创建cancelToken

const CancelToken = axios.CancelToken;
let cancel;

axios.get('/user/12345', {
  cancelToken: new CancelToken(function executor(c) {
    // executor 函数接收一个 cancel 函数作为参数
    cancel = c;
  })
});

// cancel the request
cancel();
发布了107 篇原创文章 · 获赞 25 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/zcy_csdn123/article/details/100698089