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

  • 苹果13怎么设置siri(苹果13怎么设置siri我在这呢)

    苹果13怎么设置siri(苹果13怎么设置siri我在这呢)

  • 荣耀畅玩20支持快充吗(荣耀畅玩20支持5g吗)

    荣耀畅玩20支持快充吗(荣耀畅玩20支持5g吗)

  • 红米k30s至尊纪念版屏幕的尺寸是多少(红米k30s至尊纪念版充电多少w)

    红米k30s至尊纪念版屏幕的尺寸是多少(红米k30s至尊纪念版充电多少w)

  • 电脑怎么给照片命名(电脑怎么给照片重命名)

    电脑怎么给照片命名(电脑怎么给照片重命名)

  • 小程序链接怎么朋友圈(小程序链接怎么变成网页链接)

    小程序链接怎么朋友圈(小程序链接怎么变成网页链接)

  • 微信群头像能换吗(微信群头像换了怎么还显示以前的)

    微信群头像能换吗(微信群头像换了怎么还显示以前的)

  • 电脑新闻弹窗怎么删除(电脑新闻资讯弹窗)

    电脑新闻弹窗怎么删除(电脑新闻资讯弹窗)

  • 微信怎么删视频记录(微信怎么删视频号作品)

    微信怎么删视频记录(微信怎么删视频号作品)

  • 华为手机退货退款规定(华为手机退货退到哪里)

    华为手机退货退款规定(华为手机退货退到哪里)

  • 抖音的地址会自动变化吗(抖音的地址会自己改吗)

    抖音的地址会自动变化吗(抖音的地址会自己改吗)

  • 荣耀9i外屏和内屏是一体的吗(华为荣耀9屏幕是内外一体的吗?)

    荣耀9i外屏和内屏是一体的吗(华为荣耀9屏幕是内外一体的吗?)

  • 抖音直播赞有什么用(抖音直播获得赞有钱吗)

    抖音直播赞有什么用(抖音直播获得赞有钱吗)

  • qq图片保存不到手机相册怎么办(qq图片保存不到平板相册)

    qq图片保存不到手机相册怎么办(qq图片保存不到平板相册)

  • 手机克隆苹果能用吗(手机克隆可以把苹果手机克隆到苹果手机吗)

    手机克隆苹果能用吗(手机克隆可以把苹果手机克隆到苹果手机吗)

  • 查看内存条的具体信息(怎么看内存条信息)

    查看内存条的具体信息(怎么看内存条信息)

  • iphone8能不能分屏(iphone 8 能分屏吗)

    iphone8能不能分屏(iphone 8 能分屏吗)

  • 苹果自动曝光在哪里锁定(iphone的自动曝光)

    苹果自动曝光在哪里锁定(iphone的自动曝光)

  • ipad2018支持蓝牙鼠标吗(ipad2018支持蓝牙5.2吗)

    ipad2018支持蓝牙鼠标吗(ipad2018支持蓝牙5.2吗)

  • 苹果应用与数据怎么找(苹果应用与数据怎么设置)

    苹果应用与数据怎么找(苹果应用与数据怎么设置)

  • 苹果手机怎么隐私照片(苹果手机怎么隐藏联系人)

    苹果手机怎么隐私照片(苹果手机怎么隐藏联系人)

  • 电脑怎样连接手机热点(电脑怎样连接手机wifi热点)

    电脑怎样连接手机热点(电脑怎样连接手机wifi热点)

  • 拍抖音视频怎么与他人合拍(拍抖音视频怎么去掉抖音的水印)

    拍抖音视频怎么与他人合拍(拍抖音视频怎么去掉抖音的水印)

  • 迅雷安装失败怎么回事(迅雷下载安装不了)

    迅雷安装失败怎么回事(迅雷下载安装不了)

  • qq留言板怎么恢复(qq留言板怎么恢复删除的留言)

    qq留言板怎么恢复(qq留言板怎么恢复删除的留言)

  • a2108是全网通吗(a2105是三网吗)

    a2108是全网通吗(a2105是三网吗)

  • qq怎么设置陌生人不可以发信息(qq怎么设置陌生人不可以看空间)

    qq怎么设置陌生人不可以发信息(qq怎么设置陌生人不可以看空间)

  • 六自由度机器人(机械臂)运动学建模及运动规划系列(四)——轨迹规划(六自由度机器人简图)

    六自由度机器人(机械臂)运动学建模及运动规划系列(四)——轨迹规划(六自由度机器人简图)

  • 补做前几年税审对报税税务评级有什么影响?
  • 所得税税负率的计算公式中营业收入含不含税
  • 完税证明能作为理赔依据吗
  • 接受资不抵债并账会计分录
  • 向保险公司缴纳的保险费可以税前扣除吗
  • 现在会计账簿还需要交印花税吗
  • 企业员工的高铁票进项税如何申报
  • 注册资本没缴足可以注销吗
  • 暂停使用的固定资产什么时候停止折旧
  • 结汇收益怎么算
  • 应收账款周转率多少合适
  • 小规模纳税人减免税收政策
  • 资产负债表里所有者权益合计为负数正常吗
  • 金蝶软件怎么批量审核凭证
  • 欧拉操作系统和龙蜥哪个好用
  • 员工出差时法律规定
  • 处理废料的会计分录
  • 股东分红怎么处理
  • php新手入门
  • 贷款损失会计处理
  • php爬虫源码
  • 预提费用是啥
  • 解决中暑最有效方法
  • thinkphp3.1.3手册
  • php导出表格
  • 金门大桥和马林大桥区别
  • 计提企业税费和缴纳分录怎么做
  • Web渗透测试新手实操详解
  • php access
  • php第三方支付
  • 营业外支出的会计科目
  • 资产减值损失和资产减值准备
  • 计提本月工资社保怎么扣
  • 帝国cms自定义列表
  • 给客户维修设备更换配件怎么开票
  • 你用python做什么
  • 发票超额怎么办
  • 一般纳税人申报表电子版
  • 金税四期对企业影响
  • 认缴出资额就是营业执照上的注册资金
  • 个人劳务报酬所得税税率表
  • 个人独资企业怎么交个人所得税
  • 发票冲红重开,重开时是按新税率还是旧税率?
  • 棚户区改造国家给政府拨款吗
  • 中级报名规则
  • 城市维护建设税属于中央还是地方
  • 工会经费为0是不用申报的?
  • 组织员工旅游的租宿费的税额是什么
  • 收到联营单位投入的款项98600元存入银行
  • 固定资产取得时按什么入账
  • 餐饮食材成本高怎么形容
  • 公司食堂招待客户,客户付了钱怎么入账
  • 累计折旧减少记哪方
  • 剩余股利政策发放股利后的年末未分配利润
  • 建账固定资产的期初科目是什么
  • windows下修改uuid的工具
  • win7旗舰版系统重装
  • Windows Vista下IIS使用常见问题
  • wav文件属于什么文件
  • 进程死锁原因
  • centos8 systemd
  • win7更改电脑设置在哪里
  • 新手如何入门
  • win8 应用商店
  • dos批处理实例
  • 塔防游戏二战
  • HttpURLConnection连接 详解
  • sed删除文件中的目录
  • python下读取公私钥做加解密实例详解
  • shell 查找文件并赋值shell变量
  • scp 将数据从一台linux服务器复制到另一台linux服务器
  • linux中crontab
  • unity3d怎么让物体依次运动
  • jqgrid tree
  • 出租车票真伪查询官网
  • 天津租房网个人房源出租
  • 网上怎么交车船税
  • 国家税务局大厅上班时间
  • 广东省电子税务局电话
  • 税收优惠政策有哪些企业
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设