详解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 相关文章推荐
Z-Blog中用到的js代码
Mar 15 Javascript
JS event使用方法详解
Apr 28 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
Jan 17 Javascript
jquery的ajax跨域请求原理和示例
May 08 Javascript
jquery仅用6行代码实现滑动门效果
Sep 07 Javascript
jQuery绑定自定义事件的魔法升级版
Jun 30 Javascript
BootStrapTable 单选及取值的实现方法
Jan 10 Javascript
js从输入框读取内容,比较两个数字的大小方法
Mar 13 Javascript
React 高阶组件入门介绍
Jan 11 Javascript
jQuery.validate.js表单验证插件的使用代码详解
Oct 22 jQuery
javascript实现用户必须勾选协议实例讲解
Mar 24 Javascript
使用PDF.js渲染canvas实现预览pdf的效果示例
Apr 17 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数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
PHP中的array数组类型分析说明
2010/07/27 PHP
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
浅谈Python处理PDF的方法
2017/11/10 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
python批量下载抖音视频
2019/06/17 Python
python将数组n等分的实例
2019/12/02 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
垃圾回收的优点和原理
2014/05/16 面试题
个人简历自我评价八例
2013/10/31 职场文书
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
玄武湖导游词
2015/02/05 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server