详解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获取元素到文档区域document的(横向、纵向)坐标的两种方法
May 17 Javascript
jquery任意位置浮动固定层插件用法实例
May 29 Javascript
使用伪命名空间封装保护独自创建的对象方法
Aug 04 Javascript
bootstrap选项卡扩展功能详解
Jun 14 Javascript
LayerClose弹窗关闭刷新方法
Aug 17 Javascript
使用koa2创建web项目的方法步骤
Mar 12 Javascript
详解如何更好的使用module vuex
Mar 27 Javascript
axios如何利用promise无痛刷新token的实现方法
Aug 27 Javascript
JS实现滑动导航效果
Jan 14 Javascript
JavaScript享元模式原理与用法实例详解
Mar 09 Javascript
vue 导出文件,携带请求头token操作
Sep 10 Javascript
用js实现放大镜效果
Oct 28 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
php动态变量定义及使用
2015/06/10 PHP
PHP数组游标实现对数组的各种操作详解
2016/01/26 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
Python 多线程实例详解
2017/03/25 Python
使用pandas read_table读取csv文件的方法
2018/07/04 Python
Django文件上传与下载(FileFlid)
2019/10/06 Python
python模拟实现斗地主发牌
2020/01/07 Python
python默认参数调用方法解析
2020/02/09 Python
Python中qutip用法示例详解
2020/10/02 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
快速创建python 虚拟环境
2020/11/28 Python
高三自我鉴定
2013/10/23 职场文书
毕业自我鉴定范文
2013/11/06 职场文书
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
优秀员工演讲稿
2014/05/19 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
2019学校运动会开幕词
2019/05/13 职场文书