axios-miniprogram/docs/pages/basics/cancel.md

1.6 KiB

title
取消请求

{{ $frontmatter.title }}

::: tip {{ $frontmatter.title }} 用于取消不再需要响应的请求。 :::

取消请求

可以创建一个 CancelToken 实例用来取消请求。

import axios from 'axios-miniprogram';
let cancel;

axios
  .get('/test', {
    cancelToken: new axios.CancelToken((c) => {
      // executor 函数接收一个 cancel 函数作为参数
      cancel = c;
    }),
  })
  .then((response) => {
    // 成功之后做些什么
  })
  .catch((error) => {
    // 失败之后做些什么
  });

// 取消请求
cancel('request canceled');

工厂方法

也可以用 CancelToken.source 工厂方法创建 CancelToken 实例用来取消请求。

import axios from 'axios-miniprogram';
const { cancel, token } = axios.CancelToken.source();

axios
  .get('https://api.com/test', {
    cancelToken: token,
  })
  .then((response) => {
    // 成功之后做些什么
  })
  .catch((error) => {
    // 失败之后做些什么
  });

// 取消请求
cancel('request canceled');

判断异常是否来自取消请求

也可以用 axios.isCancel 判断异常是否来自取消请求,从而做出相应的处理。

import axios from 'axios-miniprogram';
const { cancel, token } = axios.CancelToken.source();

axios
  .get('https://api.com/test', {
    cancelToken: token,
  })
  .then((response) => {
    // 成功之后做些什么
  })
  .catch((error) => {
    if (axios.isCancel(error)) {
      console.log(error, '请求已被取消');
    }
  });

// 取消请求
cancel('request canceled');