详解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 相关文章推荐
表单的一些基本用法与技巧
Jul 15 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
Dec 12 Javascript
jquery操作select方法汇总
Feb 05 Javascript
JS禁止查看网页源代码的实现方法
Oct 12 Javascript
jQuery日期范围选择器附源码下载
May 23 jQuery
详解vuejs之v-for列表渲染
Jun 22 Javascript
js+html5实现侧滑页面效果
Jul 15 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
Nov 01 Javascript
爬虫利器Puppeteer实战
Jan 09 Javascript
使用nvm和nrm优化node.js工作流的方法
Jan 17 Javascript
Vue动态面包屑功能的实现方法
Jul 01 Javascript
vue vant Area组件使用详解
Dec 09 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
Javascript 面向对象特性
2009/12/28 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
实例讲解JavaScript截取字符串
2018/11/30 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
Python 元类使用说明
2009/12/18 Python
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
QML用PathView实现轮播图
2020/06/03 Python
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
C++面试题目
2013/06/25 面试题
初一体育教学反思
2014/01/29 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
怎样写好工作计划
2019/04/10 职场文书
导游词之桂林山水
2019/09/20 职场文书
react antd实现动态增减表单
2021/06/03 Javascript
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL