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 相关文章推荐
Javascript 个人笔记(没有整理,很乱)
Jul 07 Javascript
分享别人写的一个小型js框架
Aug 13 Javascript
JSON辅助格式化处理方法
Mar 26 Javascript
js实现单击图片放大图片的方法
Feb 17 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
Jan 13 Javascript
Javascript删除指定元素节点的方法
Jun 21 Javascript
javascript设计模式Constructor(构造器)模式
Aug 19 Javascript
深入理解JavaScript继承的多种方式和优缺点
May 12 Javascript
React通过父组件传递类名给子组件的实现方法
Nov 13 Javascript
详解vue-cli中模拟数据的两种方法
Jul 03 Javascript
VuePress 静态网站生成方法步骤
Feb 14 Javascript
如何通过shell脚本自动生成vue文件详解
Sep 10 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 缓存实现代码及详细注释
2010/05/16 PHP
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
PHP实现文件下载详解
2014/11/27 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
js对象关系图 方便dom操作
2012/03/18 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
解决webpack无法通过IP地址访问localhost的问题
2018/02/22 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
[00:35]DOTA2上海特级锦标赛 MVP.Phx战队宣传片
2016/03/04 DOTA
Python闭包函数定义与用法分析
2018/07/20 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
python接口自动化框架实战
2020/12/23 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
生日宴会答谢词
2014/01/09 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
入职担保书范文
2014/05/21 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
考试没考好检讨书
2015/05/06 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
HTML通过表单实现酒店筛选功能
2021/05/18 HTML / CSS