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 相关文章推荐
Save a File Using a File Save Dialog Box
Jun 18 Javascript
jQuery bind事件使用详解
May 05 Javascript
node.js中的http.response.getHeader方法使用说明
Dec 14 Javascript
纯javascript实现四方向文本无缝滚动效果
Jun 16 Javascript
JavaScript基本语法学习教程
Jan 14 Javascript
jQuery选择器总结之常用元素查找方法
Aug 04 Javascript
微信小程序 数据封装,参数传值等经验分享
Jan 09 Javascript
Canvas放置反弹效果随机图形(实例)
Aug 17 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
Feb 26 Javascript
使用vue重构资讯页面的实例代码解析
Nov 26 Javascript
Vue中正确使用Element-UI组件的方法实例
Oct 13 Javascript
JavaScript代码实现简单计算器
Dec 27 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
Session保存到数据库的php类分享
2011/10/24 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
简单谈谈php延迟静态绑定
2016/01/26 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
Vue使用mixins实现压缩图片代码
2018/03/14 Javascript
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
python下10个简单实例代码
2017/11/15 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
css3的transition属性详解
2014/12/15 HTML / CSS
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
自荐信格式范文
2013/10/07 职场文书
实习自荐信
2013/10/13 职场文书
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
房地产销售计划书
2014/01/10 职场文书
运动会广播稿30字
2014/01/21 职场文书
社区国庆节活动方案
2014/02/05 职场文书
公益广告语集锦
2014/03/13 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
Python制作动态字符画的源码
2021/08/04 Python
mysql配置SSL证书登录的实现
2021/09/04 MySQL