详解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发布错误的详细介绍
Aug 02 Javascript
javaScript 动态访问JSon元素示例代码
Aug 30 Javascript
javascript上传图片前预览图片兼容大多数浏览器
Oct 25 Javascript
Javascript中的默认参数详解
Oct 22 Javascript
浅析Javascript匿名函数与自执行函数
Feb 06 Javascript
基于JS实现导航条flash导航条
Jun 17 Javascript
AngularJS 中文API参考手册
Jul 28 Javascript
Vue数据驱动模拟实现5
Jan 13 Javascript
详解基于angular-cli配置代理解决跨域请求问题
Jul 05 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
Oct 20 jQuery
vscode中Vue别名路径提示的实现
Jul 31 Javascript
如何利用JavaScript实现二叉搜索树
Apr 02 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
Laravel5中contracts详解
2015/03/02 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
2011/03/28 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
JavaScript中setFullYear()方法的使用详解
2015/06/11 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
python sort、sorted高级排序技巧
2014/11/21 Python
python 线程的暂停, 恢复, 退出详解及实例
2016/12/06 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
Python可变参数会自动填充前面的默认同名参数实例
2019/11/18 Python
Python图片的横坐标汉字实例
2019/12/04 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
计算机网络专业个人的自我评价
2013/10/17 职场文书
大专生的学习自我评价
2013/12/04 职场文书
教育局长自荐信范文
2013/12/22 职场文书
运动会领导邀请函
2014/02/05 职场文书
自考毕业自我鉴定
2014/03/18 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
企业务虚会发言材料
2014/10/20 职场文书