详解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 相关文章推荐
jquery实现图片滚动效果的简单实例
Nov 23 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
Feb 11 Javascript
js实现跨域的方法实例详解
Jun 24 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
Mar 06 Javascript
12个非常实用的JavaScript小技巧【推荐】
May 18 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
Nov 30 Javascript
Vue 过渡实现轮播图效果
Mar 27 Javascript
全面解析vue中的数据双向绑定
May 10 Javascript
限时抢购-倒计时的完整实例(分享)
Sep 17 Javascript
详解Angular2学习笔记之Html属性绑定
Jan 03 Javascript
jQuery 导航自动跟随滚动的实现代码
May 30 jQuery
jsonp跨域获取数据的基础教程
Jul 01 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
用文本文件制作留言板提示(下)
2006/10/09 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
PHP magento后台无法登录问题解决方法
2016/11/24 PHP
列表内容的选择
2006/06/30 Javascript
动态样式类封装JS代码
2009/09/02 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
javascript取消文本选定的实现代码
2010/11/14 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
谈一谈javascript闭包
2016/01/28 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
pyqt和pyside开发图形化界面
2014/01/22 Python
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
Django Rest framework频率原理与限制
2019/07/26 Python
python__name__原理及用法详解
2019/11/02 Python
Pytorch转tflite方式
2020/05/25 Python
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
室内设计自我鉴定
2013/10/15 职场文书
护士医德医风自我评价
2014/09/15 职场文书
政风行风评议个人心得体会
2014/10/29 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
教师师德承诺书2016
2016/03/25 职场文书
MySQL分库分表详情
2021/09/25 MySQL
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android