详解ES6 Promise对象then方法链式调用


Posted in Javascript onOctober 20, 2018

promise俗称链式调用,它是es6中最重要的特性之一

简单的说可以不停的then调用嵌套在调用(异步之后,链式调用方式执行回调),这种操作方式称为promise

then()方法的作用是Promise实例添加解决(fulfillment)和拒绝(rejection)状态的回调函数。then()方法会返回一个新的Promise实例,所以then()方法后面可以继续跟另一个then()方法进行链式调用。

let p = new Promise((resolve, reject) => {
  setTimeout(resolve, 1000, 'success');
});
p.then(
  res => {
    console.log(res);
    return `${res} again`;
  }
)
  .then(
    res => console.log(res)
  );
// 连续
// success
// success again

但是前一个then()方法中的回调函数中又可能返回一个Promise实例,这时候后面一个then()方法中的回调函数会等前一个Promise实例的状态发生变化才会调用。

let p = new Promise((resolve, reject) => {
  setTimeout(resolve, 1000, 'success');
});
p.then(
  res => {
    console.log(res);
    return new Promise((resolve, reject) => {
      setTimeout(resolve, 1000, 'success');
    });
  }
)
  .then(
    res => console.log(res)
  );
// 相隔1000ms
// success
// success

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
复制小说文本时出现的随机乱码的去除方法
Sep 07 Javascript
jquery parent和parents的区别分析
Oct 02 Javascript
js+HTML5实现视频截图的方法
Jun 16 Javascript
浅析JavaScript 调试方法和技巧
Oct 22 Javascript
Javascript实现Array和String互转换的方法
Dec 21 Javascript
更靠谱的H5横竖屏检测方法(js代码)
Sep 13 Javascript
Bootstrap实现导航栏的2种方式
Nov 28 Javascript
jQuery实现弹幕效果
Feb 17 Javascript
vue刷新和tab切换实例
Feb 11 Javascript
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
微信小程序全选多选效果实现代码解析
Jan 21 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 Vue.js
Intellij IDEA搭建vue-cli项目的方法步骤
Oct 20 #Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
Oct 20 #Javascript
angular4 获取wifi列表中文显示乱码问题的解决
Oct 20 #Javascript
vue 项目地址去掉 #的方法
Oct 20 #Javascript
VUE-cli3使用 svg-sprite-loader
Oct 20 #Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
Oct 20 #Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
Oct 19 #Javascript
You might like
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
简单JS代码压缩器
2006/10/12 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
python算法学习之基数排序实例
2013/12/18 Python
django用户登录和注销的实现方法
2018/07/16 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
python语言基本语句用法总结
2019/06/11 Python
python socket 聊天室实例代码详解
2019/11/14 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
keras:model.compile损失函数的用法
2020/07/01 Python
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
应用化学专业本科生求职信
2013/09/29 职场文书
教师业务学习制度
2014/01/25 职场文书
求职个人评价范文
2014/04/09 职场文书
一岗双责责任书
2014/04/15 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
2014年变电站工作总结
2014/12/19 职场文书
Python实现为PDF去除水印的示例代码
2022/04/03 Python