详解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 相关文章推荐
Javascript的匿名函数小结
Dec 31 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
Apr 19 Javascript
css值转换成数值请抛弃parseInt
Oct 24 Javascript
电子商务网站上的常用的js放大镜效果
Dec 08 Javascript
javascript 动态创建表格的2种方法总结
Mar 04 Javascript
javascript中JSON.parse()与eval()解析json的区别
May 19 Javascript
js剪切板应用clipboardData实例解析
May 29 Javascript
Angular设置title信息解决SEO方面存在问题
Aug 19 Javascript
详解JavaScript数组过滤相同元素的5种方法
May 23 Javascript
jQuery创建折叠式菜单
Jun 15 jQuery
koa2的中间件功能及应用示例
Mar 05 Javascript
typescript编写微信小程序创建项目的方法
Jan 29 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 日漫
PHP Array交叉表实现代码
2010/08/05 PHP
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
mac下安装nginx和php
2013/11/04 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
js类中的公有变量和私有变量
2008/07/24 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
使用javascript实现雪花飘落的效果
2015/01/13 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
python爬取网易云音乐评论
2018/11/16 Python
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
分厂厂长岗位职责
2013/12/29 职场文书
《值日生》教学反思
2014/02/17 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
2014年测量员工作总结
2014/12/12 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
python解析照片拍摄时间进行图片整理
2022/07/23 Python