详解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 复制数组实现代码
Nov 26 Javascript
jQuery中的常用事件总结
Dec 27 Javascript
基于Jquery的开发个代阴影的对话框效果代码
Jul 28 Javascript
iframe 上下滚动条如何默认在下方实现原理
Dec 10 Javascript
javascript延时加载之defer测试
Dec 28 Javascript
javascript(js)的小数点乘法除法问题详解
Mar 07 Javascript
JavaScript ParseFloat()方法
Dec 18 Javascript
JavaScript之RegExp_动力节点Java学院整理
Jun 29 Javascript
详解如何快速配置webpack多入口脚手架
Dec 28 Javascript
微信小程序结合mock.js实现后台模拟及调试
Mar 28 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
Apr 28 Javascript
我所理解的JavaScript中的this指向
Sep 04 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内存管理之谁动了我的内存
2013/06/20 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
php异常处理捕获错误整理
2019/09/23 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
2015/06/21 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
使用python实现画AR模型时序图
2019/11/20 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
放飞蜻蜓反思
2014/02/05 职场文书
班级心理活动总结
2014/07/04 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
创业计划书之DIY自助厨房
2019/09/06 职场文书
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL