详解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 相关文章推荐
通过js脚本复制网页上的一个表格的不错实现方法
Dec 29 Javascript
javascript 用记忆函数快速计算递归函数
Mar 15 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
Jan 24 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
详解Node.js中的事件机制
Sep 22 Javascript
JS实现动态添加DOM节点和事件的方法示例
Apr 28 Javascript
Bootstrap Table使用整理(二)
Jun 09 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
Jun 13 Javascript
jquery图片放大镜效果
Jun 23 jQuery
浅谈webpack+react多页面开发终极架构
Nov 11 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
Jul 20 Javascript
JavaScript this关键字的深入详解
Jan 14 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实现mysql数据库备份类
2008/03/20 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
js window.onload 加载多个函数的方法
2009/11/02 Javascript
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
node.js中的http.response.getHeader方法使用说明
2014/12/14 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
Python常用正则表达式符号浅析
2014/08/13 Python
Python骚操作之动态定义函数
2019/03/26 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
python可迭代对象去重实例
2020/05/15 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
自学考试自我鉴定范文
2013/09/26 职场文书
学生打架检讨书
2014/02/14 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
先进单位事迹材料
2014/12/25 职场文书
老干部座谈会主持词
2015/07/03 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
在redisCluster中模糊获取key方式
2021/07/09 Redis
Linux中如何安装并部署Redis
2022/04/18 Servers