1 Star 0 Fork 0

chaihongjun/axios入门与源码解析

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
5.axios取消请求.html 3.17 KB
一键复制 编辑 原始数据 按行查看 历史
chaihongjun 提交于 2021-07-25 11:25 . axios取消请求
<!--
* @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>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/chaihongjun/Introduction-to-Axios-and-source-code-analysis.git
git@gitee.com:chaihongjun/Introduction-to-Axios-and-source-code-analysis.git
chaihongjun
Introduction-to-Axios-and-source-code-analysis
axios入门与源码解析
master

搜索帮助