详解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 相关文章推荐
Juqery Html(),append()等方法的Bug解决方法
Dec 13 Javascript
extjs中grid中嵌入动态combobox的应用
Jan 01 Javascript
jqueyr判断checkbox组的选中(示例代码)
Nov 08 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
Apr 04 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
Dec 22 Javascript
jQuery获取table下某一行某一列的值实现代码
Apr 07 jQuery
jQuery:unbind方法的使用详解
Aug 14 jQuery
jQuery实现checkbox的简单操作
Nov 18 jQuery
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
Dec 11 jQuery
使用原生javascript开发计算器实例代码
Feb 21 Javascript
CocosCreator入门教程之网络通信
Apr 16 Javascript
Three.js实现雪糕地球的使用示例详解
Jul 07 Javascript
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开发Apache服务器配置
2015/07/15 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
url参数中有+、空格、=、%、&、#等特殊符号的问题解决
2013/05/15 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
2017/10/12 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
JS实现简易图片自动轮播
2020/10/16 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
Python环境变量设置方法
2016/08/28 Python
Flask数据库迁移简单介绍
2017/10/24 Python
Python中optparser库用法实例详解
2018/01/26 Python
Python控制Firefox方法总结
2019/06/03 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
英国男女奢华内衣和泳装购物网站:Figleaves
2017/01/28 全球购物
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
数据库面试要点基本概念
2013/10/31 面试题
SQL数据库笔试题
2016/03/08 面试题
店长岗位职责
2013/11/21 职场文书
如何写你的创业计划书
2014/01/07 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
工程专业求职自荐书范文
2014/02/18 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
幼儿园教学反思范文
2016/03/02 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书