- Promise 对象表示异步操作的最终完成(或失败)及其结果值
- Promise 是在创建 Promise 时不一定知道的值的代理。它允许您将处理程序与异步操作的最终成功值或失败原因相关联。这让异步方法像同步方法一样返回值:异步方法不是立即返回最终值,而是返回一个承诺,以在未来的某个时间提供该值。
- Promise
处于以下状态之一:
- pending 初始状态,既不满足也不拒绝。
- fulfilled 表示操作成功完成
- rejected 表示操作失败
- pending promise 的最终状态可以用一个值来实现(fulfilled),也可以用一个原因(错误)拒绝(rejected )。当这些选项中的任何一个发生时,将调用由 promise 的 then 方法排队的相关处理程序。如果在附加相应的处理程序时承诺已经被履行或拒绝,则处理程序将被调用,因此异步操作完成与其附加处理程序之间没有竞争条件。
- 如果一个 promise 被履行或被拒绝,但不是待处理的,则称该 promise 已解决。
构造函数 |
说明 |
Promise() |
创建一个新的 Promise 对象。构造函数主要用于包装不支持 Promise 的函数 |
- Promise 对象有以下方法:
静态方法 |
说明 |
all(iterable) |
等待所有的承诺都被履行,或者任何被拒绝。 如果返回的 Promise 实现了,它会使用来自已实现的 Promise 的值的聚合数组来实现,其顺序与多个 Promise 的可迭代中定义的顺序相同。 如果它被拒绝,它会以被拒绝的迭代中第一个承诺的原因被拒绝。 |
allSettled(iterable) |
等到所有的承诺都解决了(每个承诺都可以履行或拒绝)。 返回一个 Promise,它在所有给定的 Promise 都被实现或被拒绝后实现,并带有一组对象,每个对象都描述每个 Promise 的结果 |
any(iterable) |
获取一个 Promise 对象的可迭代对象,并且一旦可迭代对象中的一个 Promise 实现,就返回一个以该 Promise 的值实现的 Promise。 |
race(iterable) |
等到任何承诺被履行或拒绝。 如果返回的 Promise 实现了,它会用实现的 iterable 中的第一个 Promise 的值来实现。 如果它拒绝,它会以第一个被拒绝的承诺的原因被拒绝 |
reject(reason) |
返回一个新的 Promise 对象,该对象因给定原因被拒绝。 |
resolve(value) |
返回使用给定值解析的新 Promise 对象。如果该值是 thenable(即具有 then 方法),则返回的 promise 将“跟随”该 thenable,采用其最终状态;否则,返回的 Promise 将用该值实现。 一般来说,如果你不知道一个值是否是一个承诺, Promise.resolve(value) 代替它并将返回值作为一个承诺。 |
实例方法 |
说明 |
Promise.prototype.catch() |
将拒绝处理程序回调附加到 Promise,并返回一个新的 Promise,如果它被调用,则解析为回调的返回值,或者如果 Promise 被实现,则返回其原始的实现值。 |
Promise.prototype.then() |
将履行和拒绝处理程序附加到承诺,并返回一个新的承诺,解析为被调用处理程序的返回值,或者如果未处理承诺(即相关处理程序 onFulfilled 或 onRejected 不是函数),则返回其原始结算值 |
Promise.prototype.finally() |
将处理程序附加到 Promise,并返回一个新的 Promise,该 Promise 在原始 Promise 被解决时被解决。处理程序在承诺完成时被调用,无论是履行还是拒绝 |
来自 <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise>