一个 Promise
对象代表一个异步操作的最终完成(或失败)及其结果值。它允许你将异步操作的结果与成功时或失败时的回调函数关联起来。
Promise 对象的方法:
-
Promise.prototype.then(onFulfilled, onRejected)
: 添加解析成功和解析失败的回调函数。onFulfilled
是解析成功时调用的函数,onRejected
是解析失败时调用的函数。then
方法返回一个新的Promise
对象。 -
Promise.prototype.catch(onRejected)
: 添加解析失败的回调函数。这等同于调用Promise.prototype.then(undefined, onRejected)
。catch
方法返回一个新的Promise
对象。 -
Promise.prototype.finally(onFinally)
: 添加一个回调函数,无论 Promise 成功解析还是被拒绝,都将执行该回调。它在 Promise 链中的最后执行,并且返回一个新的Promise
对象。
静态方法:
-
Promise.resolve(value)
: 返回一个解析为给定值的Promise
对象。如果传入的值本身就是一个Promise
,它将不会被包装,而是直接返回。 -
Promise.reject(reason)
: 返回一个被拒绝的Promise
对象,并提供拒绝的原因。 -
Promise.all(iterable)
: 返回一个Promise
,该Promise
会等待所有传入的Promise
对象解析完成。如果任何一个传入的Promise
被拒绝,返回的Promise
也会立即被拒绝,并返回第一个拒绝的原因。 -
Promise.allSettled(iterable)
: 返回一个Promise
,该Promise
会等待所有传入的Promise
对象解析或被拒绝。返回一个新的Promise
对象,解析为传入的Promise
对象的最终状态数组。 -
Promise.race(iterable)
: 返回一个Promise
,它将解析或拒绝,具体取决于传入的Promise
对象中第一个解析或被拒绝的那个。 -
Promise.any(iterable)
: 接收一个 Promise 对象的集合,并返回第一个解析的 Promise 的值。如果所有的 Promise 都被拒绝,则返回一个新的 Promise,包括一个AggregateError
类型的错误。
注意,Promise
对象不允许外部直接访问其内部状态或值。它们的状态和值只能通过上述方法和回调函数进行访问和操作。