axios 如何取消请求?

26 min read

使用axios发送请求时,可以通过创建一个cancel token来取消请求。

首先,我们需要通过axios.CancelToken.source()方法创建一个cancel token,并将其赋值给一个变量,例如cancelToken

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

axios.get('/api/data', {
  cancelToken: source.token
}).then(response => {
  console.log(response.data);
}).catch(thrown => {
  if (axios.isCancel(thrown)) {
    console.log('请求已取消', thrown.message);
  } else {
    console.log('请求失败', thrown.message);
  }
});

然后,当我们想要取消请求时,可以调用source.cancel()方法,并传入一个可选的取消信息。

source.cancel('请求取消原因');

当请求被取消时,你可以通过捕获axios.Cancel异常来处理取消请求的逻辑。

axios.get('/api/data', {
  cancelToken: source.token
}).then(response => {
  console.log(response.data);
}).catch(thrown => {
  if (axios.isCancel(thrown)) {
    console.log('请求已取消', thrown.message);
  } else {
    console.log('请求失败', thrown.message);
  }
});

这样,当你调用source.cancel('请求取消原因')时,请求会被取消,并在进入catch语句块时输出"请求已取消"。