详解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 相关文章推荐
一个很简单的办法实现TD的加亮效果.
Jun 29 Javascript
妙用Jquery的val()方法
Jun 27 Javascript
input:checkbox多选框实现单选效果跟radio一样
Jun 16 Javascript
js精美的幻灯片画集特效代码分享
Aug 29 Javascript
JS表单数据验证的正则表达式(常用)
Feb 18 Javascript
Angularjs的$http异步删除数据详解及实例
Jul 27 Javascript
浅谈Webpack自动化构建实践指南
Dec 18 Javascript
对VUE中的对象添加属性
Sep 18 Javascript
vue-cli系列之vue-cli-service整体架构浅析
Jan 14 Javascript
bootstrap Table实现合并相同行
Jul 19 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
Dec 09 Javascript
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
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中使用XML
2006/10/09 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
Ajax基础知识详解
2017/02/17 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
Python三元运算实现方法
2015/01/12 Python
Python pickle模块用法实例
2015/04/14 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
详解python3中zipfile模块用法
2018/06/18 Python
基于django channel实现websocket的聊天室的方法示例
2019/04/11 Python
python 日期排序的实例代码
2019/07/11 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
Python requests模块安装及使用教程图解
2020/06/30 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
美国电视购物:QVC
2017/02/06 全球购物
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
高中生毕业学习总结的自我评价
2013/11/14 职场文书
自荐信写法介绍
2014/01/25 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
食品安全承诺书
2014/05/22 职场文书
个人作风建设自查报告
2014/10/22 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书