详解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 相关文章推荐
XML的代替者----JSON
Jul 21 Javascript
基于Jquery的淡入淡出的特效基础练习
Dec 13 Javascript
js获得当前时区夏令时发生和终止的时间代码
Feb 23 Javascript
JavaScript插件化开发教程(五)
Feb 01 Javascript
两种js监听滚轮事件的实现方法
May 13 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
Sep 05 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
Dec 02 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
Dec 08 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
Mar 31 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 Javascript
jQuery each和js forEach用法比较
Feb 27 jQuery
javascript实现页面的实时时钟显示示例
Aug 06 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 日期时间处理函数小结
2009/12/18 PHP
PHP的变量总结 新手推荐
2011/04/18 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
php的RSA加密解密算法原理与用法分析
2020/01/23 PHP
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
javascript常用的设计模式
2017/02/09 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
[01:46]新英雄登场
2019/09/10 DOTA
Python中模块string.py详解
2017/03/12 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
用Django写天气预报查询网站
2018/10/21 Python
python 将Excel转Word的示例
2021/03/02 Python
css3 伪元素和伪类选择器详解
2014/09/04 HTML / CSS
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
保送生自荐信范文
2013/10/06 职场文书
自我鉴定200字
2013/10/28 职场文书
工作的心得体会
2013/12/31 职场文书
优秀电子工程系毕业生求职信
2014/05/24 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
生活小常识广播稿
2015/08/19 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL