vue解决一个方法同时发送多个请求的问题


Posted in Javascript onSeptember 25, 2018

在项目开发过程中,让人抓狂之一的问题就是一个点击事件,当快速点击的时候,它会重复发送多个请求。这是不允许出现的。

但是怎么解决这个问题呢?

一般处理方法,就是点击的时候,立刻将该按钮disabled,这样就可以避免重复发送请求了。但是我发现这个有一个弊端,那就是:

如果,该事件有许多的验证,比如电话、邮箱格式是否正确呀,必填的是否填了呀等等。一旦你点击就把按钮disabled了,发现该填的没填,回去填完后发现按钮不能点了?那是因为刚才点击的时候被你disabled了,所以还得在验证的方法中取消按钮的disable。就造成了你点击的时候,第一步,将按钮disable了,然后一步一步向下验证,如果验证出错,得取消disable,当所有验证通过了,在请求的回调函数中,成功了也要取消disable,失败了也要取消disable,因为失败了用户多半还会继续点两次,不取消disable会让用户发现怎么点不了了。这就造成了全篇都是按钮disable的设置与取消。一旦有修改,很难维护的。

在vue中,有一个lodash,我们只需引入就可以使用了。比如以下代码:

<template>
 <div>
 <div class="bindBtn">
  <button class="bindDataBtn" @click="postAction">提交</button>
 </div>
 </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解决一个方法同时发送多个请求的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE 下的只读 innerHTML
Aug 21 Javascript
javascript仿qq界面的折叠菜单实现代码
Dec 12 Javascript
jquery自定义属性(类型/属性值)
May 21 Javascript
javascript简单写的判断电话号码实例
May 24 Javascript
windows下更新npm和node的方法
Nov 30 Javascript
Vue filter介绍及详细使用
Apr 04 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
详解@angular/cli 改变默认启动端口两种方式
Nov 29 Javascript
原生js实现针对Dom节点的CRUD操作示例
Aug 26 Javascript
通过vue写一个瀑布流插件代码实例
Sep 07 Javascript
js实现3D照片墙效果
Oct 28 Javascript
vue-cli3自动消除console.log()的调试信息方式
Oct 21 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
Sep 25 #Javascript
在vue中多次调用同一个定义全局变量的实例
Sep 25 #Javascript
vue观察模式浅析
Sep 25 #Javascript
详解搭建es6+devServer简单开发环境
Sep 25 #Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
Sep 25 #Javascript
在axios中使用params传参的时候传入数组的方法
Sep 25 #Javascript
VUE实现可随意拖动的弹窗组件
Sep 25 #Javascript
You might like
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
javascript offsetX与layerX区别
2010/03/12 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
vue项目中api接口管理总结
2018/04/20 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
Python设置默认编码为utf8的方法
2016/07/01 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
django做form表单的数据验证过程详解
2019/07/26 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
竞聘副主任科员演讲稿
2014/01/11 职场文书
高中体育教学反思
2014/01/24 职场文书
指导教师评语
2014/04/26 职场文书
学生安全承诺书
2014/05/22 职场文书
毕业生应聘求职信
2014/07/10 职场文书
2015年招聘工作总结
2014/12/12 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
2019广播稿怎么写
2019/04/17 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书