简介
promise 表示异步操作的最终结果。与 promise 进行交互的主要方式是通过 then 方法,该方法可以注册回调,以接收 promise 的完成值或无法完成 promise 的原因。
该规范详细说明了 then 方法的行为,提供了一个可交互的基础,所有与 Promises/A+ 规范一致的 promise 实现都可以依赖于它。因此,该规范应被视为是非常稳定的。尽管 Promises/A+ 组织有时会通过向后兼容的微小更改来修订此规范,以解决新发现的极端情况,但只有经过仔细考虑,讨论和测试之后,我们才会集成大的或向后不兼容的更改。
从历史上看,Promises/A+ 阐明了较早 Promises/A 提案 的行为条款,将其扩展到涵盖实际行为,并省略了未指定或有问题的部分。
最后,核心的 Promises/A+ 规范不涉及如何创建、完成或拒绝 Promise,而是选择专注于提供可交互的 then 方法。未来的相关规范工作可能会涉及到这些主题。
1. 术语
-
1.1. "promise"是一个行为符合此规范的,具有 then 方法的对象或函数。
-
1.2. "thenable"是具有 then 方法的对象或函数。
-
1.3. "value"是任何合法的 JavaScript 值(包括 undefined,thenable 或 promise)。
-
1.4. "exception"是使用 throw 语句抛出的值。
-
1.5. "reason"用于表示 promise 的拒绝原因。
2. 要求
2.1 Promise 状态
一个 promise 必须处于以下三种状态之一:pending, fulfilled 或者 rejected。
2.1.1 当处于 pending 时,一个 promise:
- 2.1.1.1 可能会转换为 fulfilled 或者 rejected 状态。
2.1.2 当处于 fulfilled 时,一个 promise:
-
2.1.2.1 不能再被转换为其他任何状态。
-
2.1.2.2 必须具