Promise 的描述

Promise对象 表示异步操作最终的完成(或者失败)以及其结果的值。

对 Promise 的描述

一个 Promise 是一个代理,代表一个在创建 promise 时不一定已知的值。Promise 允许我们将处理程序与异步操作的最终成功的值或者失败的原因关联起来。使得异步方法可以像同步方法一样返回值:异步方法不会立即返回最终值,而是返回一个 promise,以便在将来的某个时间点提供这个最终值。

一个 Promise 具有几种状态:

  • 待定(pending) :初始状态,没有被兑现(fulfilled) 也没有被拒绝(rejected)。
  • 已兑现(fulfilled) :操作成功完成。
  • 已拒绝(rejected) :操作失败。

一个 Promise 最终状态可以是 fulfilled 并返回一个值,或者是 rejected 并返回一个原因(错误)。这时通过 Promise 的 then 方法串联起来的处理程序将被调用。如果绑定相应的处理程序时 Promise 是 fulfilled 或者 rejected ,处理程序将被立即调用,因此,异步操作完成和绑定处理程序两者之间不存在竟态条件。

如果一个 Promise 是 fulfilled 或者是 rejected ,即不再是 pending 状态,我们称之为 敲定(settled) 。

已解决(resolved) 也是用来描述 Promise 的一个术语,表示该 Promise 是 settled ,或者为了匹配另一个 Promise 的最终状态而被 锁定(lock-in) ,resolved 状态的 Promise 进一步转化为 fulfilled 或者 rejected 都不会有影响。

new Promise((resolveOuter) => {
  resolveOuter(
    new Promise((resolveInner) => {
      setTimeout(resolveInner, 1000);
    }),
  );
});

此 Promise 在创建时已经 resolved (因为 resolveOuter 是同步调用的),但它是用另一个 Promise resolve 的,因此在内部 Promise fulfilled 的 1 秒之后才会被兑现。在实践中,“resolve”过程通常是在幕后完成的,不可观察,只有其 fulfilled 或 rejected 是可观察的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值