vue解决⼀个⽅法同时发送多个请求的问题
在项⽬开发过程中,让⼈抓狂之⼀的问题就是⼀个点击事件,当快速点击的时候,它会重复发送多个请求。这是不允许出现的。
但是怎么解决这个问题呢?
⼀般处理⽅法,就是点击的时候,⽴刻将该按钮disabled,这样就可以避免重复发送请求了。但是我发现这个有⼀个弊端,那就是:
如果,该事件有许多的验证,⽐如电话、邮箱格式是否正确呀,必填的是否填了呀等等。⼀旦你点击就把按钮disabled了,发现该填的没填,回去填完后发现按钮不能点了?那是因为刚才点击的时候被你disabled了,所以还得在验证的⽅法中取消按钮的disable。就造成了你点击的时候,第⼀步,将按钮disable了,然后⼀步⼀步向下验证,如果验证出错,得取消disable,当所有验证通过了,在请求的回调函数中,成功了也要取消disable,失败了也要取消disable,因为失败了⽤户多半还会继续点两次,不取消disable会让⽤户发现怎么点不了了。这就造成了全篇都是按钮disable的设置与取消。⼀旦有修改,很难维护的。
在vue中,有⼀个lodash,我们只需引⼊就可以使⽤了。⽐如以下代码:
<template>
<div>
<div class="bindBtn">
<button class="bindDataBtn" @click="postAction">提交</button>
</div>
lodash有哪些方法</div>
</template>
<script>
import _ from 'lodash'
export default {
data() {
return {
}
},
mounted() {
},
methods: {
sendAjax(){
/*这⾥是请求的接⼝、参数以及回调函数等*/
},
postAction(){
this.doPostAction()
}
},
created(){
this.doPostAction = _.debounce(this.sendAjax,500);
}
}
</script>
我们⾸先将发送请求的ajax⽅法写在⼀个函数⾥⾯,在这⾥就是sendAjax函数,其次,我们引⼊lodash,然后将sendAjax这个函数⽤⼀个⽅法⾃定义⼀下,在这⾥就是doPostAction,其中_是我们引⼊的lodash,_.debounce是⼀个限制操作频率的函数,⾥⾯的是500是毫秒单位。
当执⾏点击事件的时候,也就是postAction函数,我们只需要调⽤doPostAction这个函数就可以了,⽽那个500的功能就是你在这个时间段⾥,⽆论执⾏了多少次这个点击事件,它都只会执⾏⼀次。
这样就少了我们通篇disable来disable去
最后附上官⽹例⼦:
以上这篇vue解决⼀个⽅法同时发送多个请求的问题就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论