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 相关文章推荐
一些常用且实用的原生JavaScript函数
Sep 08 Javascript
javascript innerHTML使用分析
Dec 03 Javascript
JS操作iframe里的dom(实例讲解)
Jan 29 Javascript
javascript实现动态表头及表列的展现方法
Jul 14 Javascript
谈一谈js中的执行环境及作用域
Mar 30 Javascript
Boostrap实现的登录界面实例代码
Oct 09 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
Vue组件通信实践记录(推荐)
Aug 15 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
Aug 16 Javascript
Vue.js 实现数据展示全部和收起功能
Sep 05 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
Jan 23 Javascript
JavaScript Dom实现轮播图原理和实例
Feb 19 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
制作美丽的拉花
2021/03/03 冲泡冲煮
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
php实现图片添加水印功能
2014/02/13 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
Python threading多线程编程实例
2014/09/18 Python
python基础教程之分支、循环简单用法
2016/06/16 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
python pandas模块基础学习详解
2019/07/03 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
django使用graphql的实例
2020/09/02 Python
专科毕业生就业推荐信
2013/11/01 职场文书
新郎新娘婚礼答谢词
2014/01/11 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
创业计划之特色精品店
2019/08/12 职场文书
导游词之神仙居景区
2019/11/15 职场文书
Java基础-封装和继承
2021/07/02 Java/Android
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers