详解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脚本控制asp.net下treeview的NodeCheck的实现代码
Mar 02 Javascript
批量修改标签css样式以input标签为例
Jul 31 Javascript
将页面table内容与样式另存成excel文件的方法
Aug 05 Javascript
JavaScript实现Base64编码转换
Apr 23 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
Sep 05 Javascript
使用vue构建一个上传图片表单
Jul 04 Javascript
javascript 日期相减-在线教程(附代码)
Aug 17 Javascript
jquery根据name取得select选中的值实例(超简单)
Jan 25 jQuery
angularJs 表格添加删除修改查询方法
Feb 27 Javascript
vue的toast弹窗组件实例详解
May 14 Javascript
jQuery实现输入框的放大和缩小功能示例
Jul 21 jQuery
记录vue做微信自定义分享的一些问题
Sep 12 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之可变变量的实例详解
2017/09/12 PHP
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
jquery创建并行对象或者合并对象的实现代码
2012/10/10 Javascript
javascript的BOM汇总
2015/07/16 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
jQuery+Ajax实现无刷新分页
2015/10/30 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
JavaScript中的"=、==、==="区别讲解
2019/01/22 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
跟老齐学Python之集合的关系
2014/09/24 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
浅谈python写入大量文件的问题
2018/11/09 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
django 自定义过滤器的实现
2019/02/26 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
Noon埃及:埃及在线购物
2019/11/26 全球购物
abstract是什么意思
2012/02/12 面试题
预备党员党校学习自我评价分享
2013/11/12 职场文书
实习自我鉴定
2013/12/15 职场文书
给市场的环保建议书
2014/05/14 职场文书
旅游活动总结
2014/08/27 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
创业计划书之美甲店
2019/09/20 职场文书
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android