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

  • 平板可以下载钉钉上网课吗(平板可以下载钉钉软件吗)

    平板可以下载钉钉上网课吗(平板可以下载钉钉软件吗)

  • 拼多多退货运费补贴退到哪里(拼多多退货运费险审核不通过)

    拼多多退货运费补贴退到哪里(拼多多退货运费险审核不通过)

  • 打12122怎么提示空号(12121为什么拨打不通)

    打12122怎么提示空号(12121为什么拨打不通)

  • max格式用什么打开(max格式转换)

    max格式用什么打开(max格式转换)

  • 不对称三角形连接负载能否正常工作(不对称三角形连接的相电流相量图)

    不对称三角形连接负载能否正常工作(不对称三角形连接的相电流相量图)

  • 如山是小米旗下的吗(如山是小米旗下品牌吗)

    如山是小米旗下的吗(如山是小米旗下品牌吗)

  • 手机怎么调成完全静音(手机怎么调成完整模式)

    手机怎么调成完全静音(手机怎么调成完整模式)

  • 微信发不了照片是什么原因(微信发不了照片和语音怎么回事)

    微信发不了照片是什么原因(微信发不了照片和语音怎么回事)

  • iphone无线局域网无法打开(iphone无线局域网按钮点不动)

    iphone无线局域网无法打开(iphone无线局域网按钮点不动)

  • oppo手机屏上时间怎么显示(oppo手机屏时间没有了怎么显示设置)

    oppo手机屏上时间怎么显示(oppo手机屏时间没有了怎么显示设置)

  • 苹果手机只有2g网络怎么办(苹果手机只有2g信号怎么回事)

    苹果手机只有2g网络怎么办(苹果手机只有2g信号怎么回事)

  • iphone锁屏上滑不出控制中心(苹果手机锁屏上滑不动)

    iphone锁屏上滑不出控制中心(苹果手机锁屏上滑不动)

  • 苹果笔记本a1707是哪款(苹果笔记本a1707是哪年的型号)

    苹果笔记本a1707是哪款(苹果笔记本a1707是哪年的型号)

  • 京东退款申请要多久到账(京东退款申请要多长时间)

    京东退款申请要多久到账(京东退款申请要多长时间)

  • 华为荣耀9x语音助手怎么打开(华为荣耀9x语音助手可以改变语音吗?)

    华为荣耀9x语音助手怎么打开(华为荣耀9x语音助手可以改变语音吗?)

  • win10怎么关闭自动杀毒(win10怎么关闭自动更新驱动)

    win10怎么关闭自动杀毒(win10怎么关闭自动更新驱动)

  • 拼多多口令怎么变成链接(拼多多口令怎么用)

    拼多多口令怎么变成链接(拼多多口令怎么用)

  • 唯品会订单怎么清空(唯品会订单怎么退货流程)

    唯品会订单怎么清空(唯品会订单怎么退货流程)

  • 门机变频器怎么调试(门机变频器怎么买)

    门机变频器怎么调试(门机变频器怎么买)

  • rx570相当于n卡什么(rx5704g相当于)

    rx570相当于n卡什么(rx5704g相当于)

  • qb怎么换成余额(qb怎么换成余额的钱)

    qb怎么换成余额(qb怎么换成余额的钱)

  • 华为p30是双卡双待双通吗(华为p30手机是双卡双待手机吗?)

    华为p30是双卡双待双通吗(华为p30手机是双卡双待手机吗?)

  • xr是多大的屏幕(iphone xr是多大的屏幕)

    xr是多大的屏幕(iphone xr是多大的屏幕)

  • 主板内部外部接口图解(主板外部接口是用来连接)

    主板内部外部接口图解(主板外部接口是用来连接)

  • sz命令  基于ZModem协议下载文件到本地(linux sz命令使用)

    sz命令 基于ZModem协议下载文件到本地(linux sz命令使用)

  • 小规模增值税会计处理流程
  • 财务软件增加站点计入什么科目
  • 开普票需要交税多少
  • 处置资产开啥发票
  • 计提减值准备是什么凭证
  • 研发费用直接计入成本吗
  • 建筑行业异地工资怎么算
  • 行政单位要考什么
  • 商业银行贷款账号如何查询
  • 土地增值税扣除系数
  • 生产车间人员工资属于什么费用
  • 旅游业差额开票的票据可以累计一季度吗
  • 办理异地租房提取公积金流程
  • 年终奖的税收筹措是什么
  • 本期免税收入是什么
  • 银行手续费做账漏掉
  • 旅行社税收
  • 工程类劳务发票
  • 公司基本账户冻结怎么办
  • 小企业成本核算方法有哪几种
  • 红字发票怎么填申报表表二
  • macos monterey值得安装吗
  • 交付是不是法律行为
  • 退休返聘人员的优点
  • 车船使用税进哪个会计科目
  • 电子商务公司的简介
  • 企业利用外资
  • PHP:oci_set_module_name()的用法_Oracle函数
  • phpstudy的ftp
  • 企业应付账款的会计分录
  • 制作个性化的奖杯或者奖状
  • electron-vue官网
  • php调用变量的符号
  • 前端开发常见的兼容性问题
  • Using Visual Leak Detector
  • 确认收入与结转成本会计分录怎么写
  • 企业之间收的借款利息该如何交税 原文
  • 印花税减免退回会计分录
  • 完税价格和实际价格
  • 国际货运代理公司个人货物
  • python replace 多个
  • 资产负债表中的货币资金怎么算
  • 小规模纳税人应交税费科目设置
  • 异地车辆登记证书怎么补办
  • 用于捐赠的会计处理
  • 工资走公账有什么好处
  • 控股合并和吸收合并会计处理的区别
  • 承兑汇票兑现怎么填写
  • 收到政府的奖励企业需要纳税吗?
  • 定金与订金不同
  • 应付票据的概述
  • 兼职费计入什么科目
  • 损益平准金结转
  • 政府会计资产处置损益
  • 排污费征收范围包括
  • 金税盘一直没用过
  • 设备丢失查找
  • sql server 还原数据库后显示为备用只读
  • xp系统怎样创建网络连接
  • win10预览版好吗
  • 查看linux系统日志命令
  • linux lsof命令详解
  • imecmnt.exe
  • centos编译环境
  • main.exe是什么意思
  • win7运行窗口在哪
  • windows8.1crazy error
  • 深入理解ffmpeg pdf
  • unityai寻路
  • opengl怎么用
  • cmd set命令
  • bat error
  • [置顶]电影名字《收件人不详》
  • php curl获取cookie
  • android support包
  • javascript里的yield
  • 江西省税务总局官网
  • 税务设备有什么特点
  • 小规模纳税人需要进项票吗
  • 黄金消费税如何算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设