vue实现在一个方法执行完后执行另一个方法的示例


Posted in Javascript onAugust 25, 2018

用Promise来实现

function2(){
  // 你的逻辑代码 
  return Promise.resolve(/* 这里是需要返回的数据*/)
}

function3(){
  // 你的逻辑代码 
  return Promise.resolve(/* 这里是需要返回的数据*/)
}

// 调用
function1(){
  this.function2().then(val => { 
    this.function3();
  });
}

拓展知识: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>
 </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 相关文章推荐
js常用排序实现代码
Dec 28 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
Jan 23 Javascript
javascript正则匹配汉字、数字、字母、下划线
Apr 10 Javascript
jquery列表拖动排列(由项目提取相当好用)
Jun 17 Javascript
js函数内变量的作用域分析
Jan 12 Javascript
jquery控制页面部分刷新的方法
Jun 24 Javascript
JSON 数据详解及实例代码分析
Jan 20 Javascript
详解node如何让一个端口同时支持https与http
Jul 04 Javascript
Vue中使用webpack别名的方法实例详解
Jun 19 Javascript
使用JavaScript实现node.js中的path.join方法
Aug 12 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
May 13 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
Sep 16 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
Aug 25 #Javascript
对Vue beforeRouteEnter 的next执行时机详解
Aug 25 #Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
Aug 25 #Javascript
Vue中div contenteditable 的光标定位方法
Aug 25 #Javascript
Vue中mintui的field实现blur和focus事件的方法
Aug 25 #Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
Aug 25 #Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
Aug 25 #Javascript
You might like
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
PHP实现的日历功能示例
2018/09/01 PHP
Gird事件机制初级读本
2007/03/10 Javascript
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
nodeJS模块简单用法示例
2018/04/21 NodeJs
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
回顾Javascript React基础
2019/06/15 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
Python批量更改文件名的实现方法
2017/10/29 Python
用matplotlib画等高线图详解
2017/12/14 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
Prototype是怎么扩展DOM的
2014/10/01 面试题
小学五年级学生评语
2014/04/22 职场文书
社会实践评语
2014/04/28 职场文书
公司授权委托书范文
2014/09/21 职场文书
律师催款函范文
2015/06/24 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang
pytorch MSELoss计算平均的实现方法
2021/05/12 Python
Go语言设计模式之结构型模式
2021/06/22 Golang