vue如何阻止重复请求(vue,编程语言)

时间:2024-05-09 06:23:48 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    vue%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2%E9%87%8D%E5%A4%8D%E8%AF%B7%E6%B1%82

项目当中前端代码会遇到同一个请求向服务器发了多次的情况,我们要避免服务器资源浪费,同一个请求一定时间只允许发一次请求

(1)如果业务简单,例如同一个按钮防止多次点击,我们可以用定时器做防抖处理
(2)如果业务复杂,例如多个组件通过代码,同一个请求发多次,这个时候防抖已经不好处理了,最好是对重复的ajax请求统一做取消操作

方式1-通过定时器做防抖处理

效果:当用户连续点击多次同一个按钮,最后一次点击之后,过小段时间后才发起一次请求
原理:每次调用方法后都产生一个定时器,定时器结束以后再发请求,如果重复调用方法,就取消当前的定时器,创建新的定时器,等结束后再发请求,工作当中可以用第三方封装的工具函数例如lodashdebounce方法来简化防抖的代码

连接

无法解决多个按钮件的重复请求的发送问题,例如下面两种情况

按钮事件间是相互独立的,调用的是不同方法,做不到按钮间防抖效果

预览

按钮间调用的方法是相同的,是可以对方法做防抖处理,但是处理本身对方法做了一次封装,会影响到之前方法的返回值接收,需要对之前的方法做更多处理,变得更加复杂,不推荐

预览

方式2-通过取消ajax请求

直接对请求方法做处理,通过ajax库的api方法把重复的请求给取消掉

通过调用XMLHttpRequest对象实例的abort方法把请求给取消掉

预览

通过axiosCancelToken对象实例cancel方法把请求给取消掉

预览

通过axios请求拦截器,在每次请求前把请求信息和请求的取消方法放到一个map对象当中,并且判断map对象当中是否已经存在该请求信息的请求,如果存在取消上传请求

预览

通过axios的响应拦截器,在请求成功后在map对象当中,删除该请求信息的数据

预览

通过axios的响应拦截器,在请求失败后在map对象当中,删除该请求信息的数据

本文:vue如何阻止重复请求的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Node中的Stream是什么下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18