代码拉取完成,页面将自动刷新
<!--
* @Author: ChaiHongJun
* @Date: 2021-07-24 20:23:49
* @LastEditors: ChaiHongJun
* @LastEditTime: 2021-07-25 11:25:10
* @version:
* @Description:
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>axios 取消请求</title>
<link
href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.0.2/css/bootstrap.min.css"
rel="stylesheet"
/>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js"></script>
</head>
<body>
<div class="container">
<h2 class="page-header">axios 取消请求</h2>
<button class="btn btn-primary" type="button">GET</button>
<button class="btn btn-warning" type="button">cancel</button>
<div class="card-body">
<pre>
// 1. 调用构造函数
const CancelToken = axios.CancelToken;
// 2. 设置可取消请求标记
let cancel = null;
// 3. 请求前,先判断之前的请求是否存,
// 如果存在则取消前面的请求,使用后面新的请求
if(cancel){
cancel();
}
axios({
url:'/api',
// 3.配置可取消的属性和对应的函数
/* 这里给每个请求设置一个可取消的标记(函数形式),提供外部调用 */
cancelToken:new CancelToken(function(c){
// 4. 参数c为实际可取消函数,这里赋值给全局变量cancel,提供外部调用
cancel = c;
})
}).then((res) => {
//获取数据
console.log(res)
cancel = null; //* 请求完毕获取数据后,初始化【可取消】标记
})
//5.点击执行取消请求
document.querySelector('button').addEventListener('click', function(){
cancel();
});
</pre>
</div>
</div>
</body>
</html>
<script>
window.addEventListener("load", () => {
const buttons = document.querySelectorAll("button");
// 1. 调用构造函数
const CancelToken = axios.CancelToken;
// 2. 设置可取消请求标记
let cancel = null;
for (let i = 0; i < buttons.length; i++) {
buttons[i].addEventListener("click", () => {
//点击请求按钮
if (i == 0) {
/* 防止连续多次点击 */
// 对于多次点击,先判断之前的请求是否存在,如果存在就取消下一次请求
if (cancel) {
cancel();
}
axios({
url: "http://localhost:3000/posts",
// 3.配置可取消的属性和对应的函数
cancelToken: new CancelToken(function (c) {
cancel = c;
}),
}).then((response) => {
console.log(response);
// 获取完数据,将可取消标记初始化
cancel = null;
});
} else {
//点击了取消按钮
cancel();
}
});
}
});
</script>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。