取消请求

    在使用 Axios 发起请求时,可以通过 cancelToken 属性实现请求的取消功能。

    1// 定义全局变量,用于存储取消函数
    2let cancel;
    3
    4const getApi = () => {
    5  // 检查是否有未完成的请求
    6  if (cancel) {
    7    // 如果有未完成的请求,取消它
    8    cancel();
    9  }
    10
    11  axios({
    12    method: "GET",
    13    url: "http://127.0.0.1:3000/posts",
    14    // 创建一个 CancelToken,并将取消函数存储到全局变量
    15    cancelToken: new axios.CancelToken(function executor(c) {
    16      cancel = c;
    17    }),
    18  })
    19    .then((response) => {
    20      // 请求成功时,清空取消函数
    21      cancel = null;
    22      console.log("请求成功:", response.data);
    23    })
    24    .catch((error) => {
    25      if (axios.isCancel(error)) {
    26        console.log("请求已取消:", error.message);
    27      } else {
    28        console.error("请求失败:", error);
    29      }
    30    });
    31};
    32
    33const cancelApi = () => {
    34  // 调用取消函数,取消请求
    35  if (cancel) {
    36    cancel("请求被手动取消");
    37    cancel = null;
    38  }
    39};