详解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 相关文章推荐
判断JavaScript对象是否可用的最正确方法分析
Oct 03 Javascript
jQuery实现切换页面布局使用介绍
Oct 09 Javascript
jQuery Tools tab使用介绍
Jul 14 Javascript
JavaScript回调(callback)函数概念自我理解及示例
Jul 04 Javascript
jquery ui dialog实现弹窗特效的思路及代码
Aug 03 Javascript
javascript处理a标签超链接默认事件的方法
Jun 29 Javascript
js为什么不能正确处理小数运算?
Dec 29 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
Feb 27 Javascript
javascript 删除数组元素和清空数组的简单方法
Feb 24 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
Dec 07 Javascript
layui 给数据表格加序号的方法
Aug 20 Javascript
npm配置国内镜像资源+淘宝镜像的方法
Sep 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
建立文件交换功能的脚本(三)
2006/10/09 PHP
PHP使用静态方法的几个注意事项
2014/09/16 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
Zend Framework入门知识点小结
2016/03/19 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
iView框架问题整理小结
2018/10/16 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
django批量导入xml数据
2016/10/16 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
Python的pygame安装教程详解
2020/02/10 Python
Python必须了解的35个关键词
2020/07/16 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
Java程序员面试90题
2013/10/19 面试题
餐饮采购员岗位职责
2014/03/15 职场文书
考试保密承诺书
2014/08/30 职场文书
学习群众路线的心得体会
2014/11/05 职场文书
校长师德表现自我评价
2015/03/05 职场文书
八年级作文之感恩
2019/11/22 职场文书
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL
Python PIL按比例裁剪图片
2022/05/11 Python