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 相关文章推荐
如何做到打开一个页面,过几分钟自动转到另一页面
Apr 20 Javascript
js 判断 enter 事件
Feb 12 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
Apr 07 Javascript
使用Grunt.js管理你项目的应用说明
Apr 24 Javascript
写JQuery插件的基本知识
Nov 25 Javascript
js关于字符长度限制的问题示例探讨
Jan 24 Javascript
jQuery原型属性和原型方法详解
Jul 07 Javascript
详解JavaScript数组和字符串中去除重复值的方法
Mar 07 Javascript
如何利用JSHint减少JavaScript的错误
Aug 23 Javascript
ES6概念 ymbol.for()方法
Dec 25 Javascript
微信小程序rich-text富文本用法实例分析
May 20 Javascript
Vue基于localStorage存储信息代码实例
Nov 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
Terran历史背景
2020/03/14 星际争霸
Apache设置虚拟WEB
2006/10/09 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
2010/06/05 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
vue-cli —— 如何局部修改Element样式
2020/10/22 Javascript
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
中级会计职业生涯规划书
2014/03/01 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
2014年党支部学习材料
2014/05/19 职场文书
教师节学生演讲稿
2014/09/03 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
详解MySQL连接挂死的原因
2021/05/18 MySQL
Go语言编译原理之源码调试
2022/08/05 Golang