在使用 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};