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 相关文章推荐
jQuery的Ajax时无响应数据的解决方法
May 25 Javascript
JQuery 控制内容长度超出规定长度显示省略号
May 23 Javascript
ashx文件获取$.ajax()方法发送的数据
May 26 Javascript
AngularJS Phonecat实例讲解
Nov 21 Javascript
jQuery控制控件文本的长度的操作方法
Dec 05 Javascript
jQuery Easyui 下拉树组件combotree
Dec 16 Javascript
简单谈谈原生js的math对象
Jun 27 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
May 02 Javascript
chosen实现省市区三级联动
Aug 16 Javascript
解决layui的input独占一行的问题
Sep 10 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 Javascript
element 动态合并表格的步骤
Dec 31 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
深入了解php4(2)--重访过去
2006/10/09 PHP
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
jquery禁用右键示例
2014/04/28 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
Prototype框架详解
2015/11/25 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
vue 插槽简介及使用示例
2020/11/19 Vue.js
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
Python 比较两个数组的元素的异同方法
2017/08/17 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
python解析含有重复key的json方法
2019/01/22 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
python实现扫雷小游戏
2020/04/24 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
学生实习自我鉴定
2013/10/11 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
纪录片信仰观后感
2015/06/08 职场文书
详解Redis基本命令与使用场景
2021/06/01 Redis
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
2022/04/11 Vue.js