位置: IT常识 - 正文

axios 取消请求:CancelToken(afn取消请求)

编辑:rootadmin
axios 取消请求:CancelToken

目录

示例代码:

步骤操作:

优化取消请求(细化错误问题):

 示例代码:

axios 请求拦截器中使用取消请求:

示例代码:

axios 批量发送请求:


推荐整理分享axios 取消请求:CancelToken(afn取消请求),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:axios请求一直是pending状态,axios取消请求发送,axios请求一直是pending状态,axios怎么中断请求,axios取消请求的原理,afn取消请求,axios取消请求的原理,axios取消请求的原理,内容如对您有帮助,希望把文章链接给更多的朋友!

注意:此方法(CancelToken),官方已经不推荐,推荐去看官网的方法

示例代码:<body> <button id="btn1">点我获取测试数据</button> <button id="btn2">取消请求</button> <script> const btn1 = document.getElementById('btn1'); const btn2 = document.getElementById('btn2'); const {CancelToken} = axios; //CancelToken能为一次请求‘打标识’ let cancel; btn1.onclick = async () => { axios({ url:'http://localhost:5000/test1?delay=3000', cancelToken: new CancelToken((c)=>{ //c是一个函数,调用c就可以关闭本次请求 cancel = c; }) }).then( response =>{console.log('成功了',response);}, error =>{console.log('失败了',error);} ) } btn2.onclick = () =>{ cancel(); } </script></body>步骤操作:

1.首先定义一个 CancelToken 来接收 axios 中 CancelToken 主要是为了’打标识

const {CancelToken} = axios; //CancelToken能为一次请求‘打标识’axios 取消请求:CancelToken(afn取消请求)

2.然后定义一个 cancel 变量 

let cancel;

3.在 axios 对象中配置 cancelToken: 

cancelToken: new CancelToken((c)=>{ //c是一个函数,调用c就可以关闭本次请求 cancel 的缩写 cancel = c;//赋值给外面的变量cancel 提升c的作用域?})

4.最后绑定在某个事件发生后想取消请求时调用:

//笔记中所写的事件为点击事件 任何事件都可以btn2.onclick = () =>{ cancel();}优化取消请求(细化错误问题):

说明:点击取消请求时,axios也会去失败的回调,但这不是服务器的错误导致的,是用户自身不需要本次请求,所以需要对于错误进行划分。以及如果用户反复点击,会发出多次请求,单只需要一次请求。

 示例代码:<body> <button id="btn1">点我获取测试数据</button> <button id="btn2">取消请求</button> <script> const btn1 = document.getElementById('btn1'); const btn2 = document.getElementById('btn2'); const { CancelToken, isCancel } = axios //CancelToken能为一次请求‘打标识’ let cancel; btn1.onclick = async () => { if(cancel) cancel();//避免多次反复请求 axios({ url: 'http://localhost:5000/test1?delay=3000', cancelToken: new CancelToken((c) => { //c是一个函数,调用c就可以关闭本次请求 cancel = c; }) }).then( response => { console.log('成功了', response); }, error => { if (isCancel(error)) { //如果进入判断,证明:是用户取消了请求 console.log('用户取消了请求,原因是', error.message); } else { console.log('失败了', error); } } ) } btn2.onclick = () => { cancel("任性,我就是不想要了"); } </script></body>

解释:cancel 函数可在括号中添加说明,在进入失败的回调时进行判断是服务器端发出的,还是用户自己取消的。

axios 请求拦截器中使用取消请求:示例代码:<body> <button id="btn1">点我获取测试数据</button> <button id="btn2">取消请求</button> <script> const btn1 = document.getElementById('btn1'); const btn2 = document.getElementById('btn2'); const { CancelToken, isCancel } = axios //CancelToken能为一次请求‘打标识’ let cancel; //请求拦截器 axios.interceptors.request.use(config => { if(cancel) cancel('取消了'); config.cancelToken =new CancelToken((c)=> cancel = c); //c是一个函数,调用c就可以关闭本次请求 return config; }); //响应拦截器 axios.interceptors.response.use(response => { return response.data; },error => { if (isCancel(error)) { //如果进入判断,证明:是用户取消了请求 console.log('用户取消了请求,原因是', error.message); } else { console.log('失败了', error); } return new Promise(()=>{}); }); //进行简化 btn1.onclick = async () => { const result = await axios.get('http://localhost:5000/test1?delay=3000'); console.log(result); } btn2.onclick = () => { cancel("我不想要了"); } </script></body>axios 批量发送请求:

使用了axios.all( ) 的API,括号中为数组,其中写需要并发的请求。

<body> <button id="btn1">点我获取测试数据</button> <script> const btn1 = document.getElementById('btn1'); btn1.onclick = async () => { axios.all([ axios.get('http://localhost:5000/test1'), axios.get('http://localhost:5000/test2'), axios.get('http://localhost:5000/test3'), ]).then( response =>{console.log(response);}, error =>{console.log(error);} ) }; </script></body>

解释:Axios.all( ) 基于 promise.all( ),所有的都是成功的回调才会返回数据,如果有一个失败的回调,就会走错误信息。此方法会按顺序打印 并发的三个请求的数据,并且如果用了延迟请求也会是原本的顺序,这是 axios 封装好的。 

本文链接地址:https://www.jiuchutong.com/zhishi/299023.html 转载请保留说明!

上一篇:CSS实现: 水平居中 的几种方法(css水平居中和垂直居中怎么设置)

下一篇:织梦DEDECMS缓存文件时间长度的修改方法(将织梦dedecms转换到wordpress)

  • 售后回租和融资租赁账务处理
  • 工商注册经营部和公司的区别
  • 税务免抵调库是什么意思
  • 营业执照丢失公示几天才能注销
  • 在建工程贷款利息分录
  • 金税盘数据迁移失败
  • 股权转让怎么申报
  • 专票抵扣进项税可以省钱吗
  • 没有支付运费会怎样
  • 投资性房地产转为非投资性房地产
  • 交易性金融资产借贷方向
  • 哪些产品计算消费税时可以扣除
  • 收到预付账款的分录
  • 有留抵税额的会计处理
  • 银票贴现需要银行授信吗
  • 关联企业税收
  • 体检发票开公司还是个人
  • 加盟费收入如何入账
  • 酒店固定资产明细表范本
  • 以前年度损益调整会计分录
  • 增值税普通发票几个点
  • 利用退休人员避孕措施
  • 长期待摊未摊完处置如何账务处理
  • 小规模纳税人增值税3%减按1%
  • 国家基建项目规划
  • 报销旅游门票怎么报销
  • bios设置内存频率后黑屏
  • 订金账务处理
  • 联想win10自动修复失败还能保存文件吗
  • php远程命令执行
  • token过期处理
  • 安装了sklearn调用却找不到
  • 珠穆朗玛峰的壮观
  • vue调用后端接口的方法
  • 二手车过户需要带什么资料
  • 存货短缺会计处理
  • php shell_exec()
  • xclip命令怎么用
  • python闭包主要解决什么问题
  • 资产减值损失结转到哪里
  • 应收帐款质保金
  • 资产负债表固定资产清理
  • 劳务分包属于人工成本吗
  • 扶贫资金是如何发放的
  • 企业购买理财产品收益要交税吗
  • 营业执照办理税务登记需要什么资料
  • 一般纳税人是指哪些人群
  • 贷款调查的主要内容
  • 税控盘抄报税逾期怎么办
  • 购入需要安装的设备计入什么科目
  • 发票冲红如何做账红字发票需要给购买方吗
  • 其他权益工具投资公允价值变动计入什么科目
  • 研发加计扣除抵减税额怎么算
  • 全资子公司并入母公司
  • 一般纳税人购进税控设备如何抵扣
  • 减值损失和减值损失区别
  • 开红字发票必须要收回原发票并作废吗?
  • 会计 预提
  • cmd命令行窗口快捷键
  • windows2003怎么修改用户密码
  • linux 解压.z
  • 怎么查看win7系统电脑访问了哪些应用程序
  • linux怎么vi
  • win8桌面右键无法使用
  • STMGR.EXE - STMGR是什么进程
  • realmon.exe - realmon是什么进程 有什么用
  • 怎样关闭android系统的内存不足的系统通知
  • 在动画制作中一般默认帧数选择为
  • Unity3d OnApplicationPause与OnApplicationFocus 判断游戏暂停还是重新启动
  • jquery如何获取input的值
  • unity之血瓶金币的生成
  • jquery的fadein
  • python多进程模块
  • 00后先进人物事迹简介
  • 发票代码如何查真伪
  • 先进单位表彰发言稿
  • 税款复核需要多少天
  • 云南4050人员2020最新政策
  • 烟叶税是谁交
  • 二手房个税怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设