详解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完成代码前最好对其做5件事
Apr 07 Javascript
JS实现简单的Canvas画图实例
Jul 04 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
Dec 18 Javascript
jQuery简单实现禁用右键菜单
Mar 10 Javascript
JS实现支持多选的遍历下拉列表代码
Aug 20 Javascript
AngularJS equal比较对象实例详解
Sep 14 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
Sep 14 Javascript
深入理解选择框脚本[推荐]
Dec 13 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
Sep 22 Javascript
利用原生的JavaScript实现简单拼图游戏
Nov 18 Javascript
详解vue 命名视图
Aug 14 Javascript
微信小程序错误this.setData报错及解决过程
Sep 18 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函数解决SQL injection
2006/10/09 PHP
动态生成gif格式的图像要注意?
2006/10/09 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
Python的ORM框架SQLObject入门实例
2014/04/28 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
小学校长汇报材料
2014/08/20 职场文书
幼儿园辞职书
2015/02/26 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
管辖权异议上诉状
2015/05/23 职场文书
英语投诉信范文
2015/07/03 职场文书
导游词之天津古文化街
2019/11/09 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers