详解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 相关文章推荐
12个非常有创意的JavaScript小游戏
Mar 18 Javascript
javascript一个无懈可击的实例化XMLHttpRequest的方法
Oct 13 Javascript
JS 如果改变span标签的是否隐藏属性
Oct 06 Javascript
JS控制一个DIV层在指定时间内消失的方法
Feb 17 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
Feb 03 Javascript
基于JavaScript实现仿京东图片轮播效果
Nov 06 Javascript
jQuery获取table行数并输出单元格内容的实现方法
Jun 30 Javascript
jquery二级目录选中当前页的css样式
Dec 08 Javascript
vue项目设置scrollTop不起作用(总结)
Dec 21 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
Sep 03 Javascript
layui实现form表单同时提交数据和文件的代码
Oct 25 Javascript
使用vue-router切换页面时实现设置过渡动画
Oct 31 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 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
jquery调用wcf并展示出数据的方法
2011/07/07 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
2013/06/12 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
jQuery点缩略图弹出层显示大图片
2015/02/13 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
python实现小球弹跳效果
2019/05/10 Python
Python 监测文件是否更新的方法
2019/06/10 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
python re模块和正则表达式
2021/03/24 Python
运动会入场解说词300字
2014/01/25 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS