详解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 相关文章推荐
关于jquery动态增减控件的一些想法和小插件
Aug 01 Javascript
各情景下元素宽高的获取实现代码
Sep 13 Javascript
jquery实现背景墙聚光灯效果示例分享
Mar 02 Javascript
js实现网页标题栏闪烁提示效果实例分析
Nov 20 Javascript
JS返回iframe中frameBorder属性值的方法
Apr 01 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
Jun 20 Javascript
jQuery的extend方法【三种】
Dec 14 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
Feb 13 Javascript
详解webpack babel的配置
Jan 09 Javascript
如何从0开始用node写一个自己的命令行程序
Dec 29 Javascript
JavaScript canvas实现雨滴特效
Jan 10 Javascript
微信小程序抽奖组件的使用步骤
Jan 11 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 中检查或过滤IP地址的实现代码
2011/11/27 PHP
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
jquery中this的使用说明
2010/09/06 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
Python实现的HMacMD5加密算法示例
2018/04/03 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
餐饮主管岗位职责
2013/12/10 职场文书
百度吧主申请感言
2014/01/12 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
教师党员整改措施
2014/10/24 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
SQL之各种join小结详细讲解
2021/08/04 MySQL