位置: 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)

  • 淘宝买家秀视频怎么保存(淘宝买家秀视频审核要多久)

    淘宝买家秀视频怎么保存(淘宝买家秀视频审核要多久)

  • 怎么更换腾讯视频会员账号(怎么更换腾讯视频背景图)

    怎么更换腾讯视频会员账号(怎么更换腾讯视频背景图)

  • 苹果手表带无线充电吗(苹果手表带无线充电器吗)

    苹果手表带无线充电吗(苹果手表带无线充电器吗)

  • 抖音珍惜时间测试怎么弄(抖音里让人珍惜时间的句子)

    抖音珍惜时间测试怎么弄(抖音里让人珍惜时间的句子)

  • 陌陌注销后显示的状态(陌陌注销显示钱包余额尚未结清)

    陌陌注销后显示的状态(陌陌注销显示钱包余额尚未结清)

  • 苹果11照片怎么编辑文字(苹果11照片怎么加密)

    苹果11照片怎么编辑文字(苹果11照片怎么加密)

  • 关联qq却看不到消息(关联qq却看不到好友动态)

    关联qq却看不到消息(关联qq却看不到好友动态)

  • 华为p40怎样设置返回键(华为p40怎样设置简易模式)

    华为p40怎样设置返回键(华为p40怎样设置简易模式)

  • soul隐身发布的瞬间好友能看见吗(soul隐身发布的瞬间)

    soul隐身发布的瞬间好友能看见吗(soul隐身发布的瞬间)

  • 声卡直播别人听不到声音(声卡直播别人听不见声音是怎么回事)

    声卡直播别人听不到声音(声卡直播别人听不见声音是怎么回事)

  • 晶体管输出和继电器输出的区别(晶体管输出和继电器输出接线)

    晶体管输出和继电器输出的区别(晶体管输出和继电器输出接线)

  • 发抖音艾特抖音小助手有什么作用(发抖音艾特抖音小助手会增加播放量吗)

    发抖音艾特抖音小助手有什么作用(发抖音艾特抖音小助手会增加播放量吗)

  • 手机热点怎么改名字(手机热点怎么改密码)

    手机热点怎么改名字(手机热点怎么改密码)

  • 华为nova5pro怎么设置来电闪光灯(华为nova5pro怎么恢复出厂设置)

    华为nova5pro怎么设置来电闪光灯(华为nova5pro怎么恢复出厂设置)

  • 华为nova3数据线多长(华为nova3数据线是什么接口)

    华为nova3数据线多长(华为nova3数据线是什么接口)

  • 手机ip是固定的吗(手机ip是固定的还是随手机号改变)

    手机ip是固定的吗(手机ip是固定的还是随手机号改变)

  • 无需物流发货算违规吗(无需物流发货算超时吗)

    无需物流发货算违规吗(无需物流发货算超时吗)

  • iphone11多少g(iPhone11多少高刷)

    iphone11多少g(iPhone11多少高刷)

  • 0pp0r17后盖能更换其他材料吗(oppor17pro后盖更换)

    0pp0r17后盖能更换其他材料吗(oppor17pro后盖更换)

  • win7强行删除开机密码(win7强行删除开机密码视频)

    win7强行删除开机密码(win7强行删除开机密码视频)

  • 怎么在线编辑Excel(怎么在线编辑excel表格)

    怎么在线编辑Excel(怎么在线编辑excel表格)

  • a1920是什么版本(a1901是什么版本)

    a1920是什么版本(a1901是什么版本)

  • vivox27返回键怎么设置(vivox27返回键怎么调出来视频)

    vivox27返回键怎么设置(vivox27返回键怎么调出来视频)

  • win10家庭版去掉盾牌(win10家庭版怎么去掉盾牌)

    win10家庭版去掉盾牌(win10家庭版怎么去掉盾牌)

  • vue3 router配置有关parent报null 的错误问题(vue-router)

    vue3 router配置有关parent报null 的错误问题(vue-router)

  • 【实战与杂谈】如何复活一个开源网站-游戏王卡片生成器(实战到底究竟是什么意思啊)

    【实战与杂谈】如何复活一个开源网站-游戏王卡片生成器(实战到底究竟是什么意思啊)

  • 个体工商户应如何购买社会保险公积金
  • 项目异地预缴附加税会计分录是?
  • 完税证明能作为理赔依据吗
  • 家庭保洁服务价格表
  • 如何保证企业生存发展
  • 资产处置损益需要转营业外支出吗
  • 企业所得税的税率
  • 房地产开发企业预缴增值税
  • 煤炭运输企业的环保方案及措施怎么写
  • 无形资产界定标准
  • 住宿发票抵扣怎么做账
  • 材料入库时实收什么意思
  • 收到长期股权投资的现金股利
  • 小规模纳税人转成一般纳税人条件
  • 完税凭证和纳税凭证区别
  • 什么税不计入税金及附加科目
  • 个人所得税怎么查
  • 税控维护费的分录
  • 6种个人所得税违规手段,财务人再小心别跳坑!
  • 国家税务总局公告2012年第57号
  • 建筑公司异地预缴增值税
  • 拿库存商品抵债怎么做账
  • 电脑管家怎么检测
  • office2016安全模式
  • win11打开软件出现????????
  • PHP:stream_get_line()的用法_Stream函数
  • 路由器重启以后wifi不见了
  • 销售成本属于成本吗
  • 电和电能是什么关系
  • yolo部署到服务器
  • 增值税即征即退操作流程
  • 一般纳税人未取得增值税专用发票怎么处理
  • pdf在线预览备注
  • vue项目中技巧知识点
  • win10本地模式
  • php支付宝现实支付要收费吗
  • 补开发票对公司有什么影响
  • 个人取得的劳务报酬所得,如何缴纳个税
  • 财务f/p是什么意思的缩写
  • ps怎么移动某个图案
  • dedecms转其他cms
  • php发邮件系统源码
  • 其他收益包含
  • 哪些合同不用计提印花税
  • 通行费发票如何勾选
  • 客户是否需要向客户介绍
  • 存货盘点后的检查
  • 企业股权融资方式有哪些
  • 哪些进项的税可以退税
  • 外地工程预缴的工资怎么做账务处理
  • 企业刚注册成功又要注销要什么手续
  • 营改增后众筹融资业务的会计处理分析?
  • 母公司和子公司是两个完全独立的法人
  • 工会经费是应付职工福利还是管理费用
  • 上月有留抵税额本月怎么申报
  • 建筑企业工程施工科目怎么结转
  • 私人银行卡给公司走账有影响吗
  • sql 分页语句
  • XP系统无法安装软件
  • win7用u盘怎么重装系统
  • win9系统
  • Win10年度更新将统一Insider与Xbox One预览体验
  • win8.1 安装
  • Linux如何使用命令
  • android开发一般用什么软件
  • shell 方法调用
  • JS中setTimeout的巧妙用法前端函数节流
  • 建立虚拟局域网有什么好处
  • js原生dialog
  • shell脚本实现Linux运维监控
  • js全局变量怎么定义
  • javascript零基础
  • python中的堆和栈
  • 电子发票查询官网入口
  • 个人所得税完税证明在哪里查询
  • 矿产资源税的计税依据
  • 税务备案超过15天
  • 社保欠缴可以放弃吗
  • 种花需要
  • 广东个体户年报微信申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设