ES6 中的 Promise对象与迭代器

Promise对象

ECMAScript 6新增了Promise 对象,该对象允许对延迟和异步操作流程进行控制。一个 Promise对象就是一个代表了异步操作最终完成或者失败的对象。
开发人员可以使用由其他函数创建并返回的Promise对象。Promise对象本质上就是一个绑定了回调的对象,而不是将回调传进函数内部。

一个Promise有以下几种状态:

  • pending:初始状态,既不是成功,也不是失败状态。
  • fulfilled:意味着操作成功完成。
    rejected:意味着操作失败。

创建Promise对象

ECMAScript 6新增了Promise 对象是一个构造函数,用于创建生成Promise 对象实例。

let promise = new Promise(function (resolve, reject) {
   });

executor表示带有resolve和reject两个参数的函数。

  • Promise 构造函数执行时立即调用executor函数,resolve和reject两个函数作为参数传递给executor ( executor函数在Promise构造函数返回新建对象前被调用)。
  • resolve和reject函数被调用时,分别将Promise的状态改为fulfilled(完成)或rejected(失败)。意味着操作失败。
let promise = new Promise((resolve, reject) => {
   
  setTimeout(() => {
   
    resolve("测试成功啦...");
  }, 2000);
});

//将Promise 状态改变 - 要么成功,要么失败

promise.then((value) => {
   
  console.log(value);
});

Promise对象由其他函数创建并返回;

function fn() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("测试成功啦...");
    }, 2000);
  });
}

var promise = fn();

Promise对象的约定

在应用Promise时,将会有以下约定:

  • 在JavaScript事件队列的当前运行完成之前,回调函数永远不会被调用。
  • 通过.then形式添加的回调函数,甚至都在异步操作完成之后才被添加的函数,都会被调用。
  • 通过多次调用.then,可以添加多个回调函数,它们会按照插入顺序并且独立运行。

因此,Promise最直接的好处就是链式调用

Promise对象的链式操作

常见的需求就是连续执行两个或者多个异步操作。这种情况下,每一个后来的操作都在前面的操作执行成功之后,带着上一步操作所返回的结果开始执行。可以通过创造一个Promise来完成这种需求。then()函数会返回一个新的Promise,跟原来的不同:

//创建 Promise对象
let promise = new Promise((resolve
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值