Promise
Promise
对象表示异步操作的最终完成(或失败)及其结果值。
Promise
是创建Promise
时不一定知道的值的代理。它允许你将处理程序与异步操作的最终成功值或失败原因相关联。这使得异步方法可以像同步方法一样返回值:异步方法不会立即返回最终值,而是返回一个Promise
以在未来某个时候提供该值。
States of Promise / 状态
pending
: 初始状态,既不是fulfilled
也不是rejected
fulfilled
: 表示操作成功完成rejected
: 表示操作失败
一个Promise
最终会是fulfilled
或rejected
,但不会是pending
。
Chained Promises / 链式使用
Promise.prototype.**then**()
、Promise.prototype.**catch**()
和Promise.prototype.**finally**()
方法用于将进一步的操作与已确定的Promise
相关联。这些方法返回Promise
,可以进行链式使用。
Methods / 方法
Basic / 基础
Promise.resolve
resolve
静态方法将给定值解析为Promise
如果该值是Promise
,则返回该Promise
如果该值是thenable
,resolve
将调用then
方法并准备两个回调
否则返回的Promise
将与该值一起实现
Promise.reject
reject
静态方法返回一个以给定原因被拒绝的Promise
对象
Advanced / 进阶
Promise.all
要求全部
fulfilled
当所有Promise
都fulfilled
时fulfilled
当任何Promise
被rejected
时rejected
Promise.allSettled
要求全部
settled
当所有Promise
都settled
(fulfilled
或是rejected
)时fulfilled
Promise.any
要求任意
fulfilled
当任何Promise``fulfilled
时fulfilled
当所有Promise
都rejected
时rejected
Promise.race
当任何Promise``settled
时settled
换句话说,当任何Promise``fulfilled
时fulfilled
;当任何Promise``rejected
时rejected
。
Prototype Method / 原型方法
Promise.prototype.then
Promise
实例的then
方法最多需要两个参数:Promise
的fulfilled
和rejected
情况的回调函数。它立即返回一个等效的Promise
对象,允许链式调用其他Promise
方法
Promise.prototype.catch
Promise
实例的catch
方法被设计为Promise``rejected
时调用一个函数。它会立即返回一个等效的Promise
对象,允许链式调用其他Promise
方法
Promise.prototype.finally
Promise
实例的finally
方法会在Promise
被settled
(fulfilled
或rejected
)时被调用。该方法立即返回一个等效的Promise
对象,允许链式调用其他Promise
方法
这种方式可以帮助您避免在Promise
的then
和catch
处理程序中出现重复代码。