Promise

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

Promise是创建Promise时不一定知道的值的代理。它允许你将处理程序与异步操作的最终成功值或失败原因相关联。这使得异步方法可以像同步方法一样返回值:异步方法不会立即返回最终值,而是返回一个Promise以在未来某个时候提供该值。

States of Promise / 状态

  • pending: 初始状态,既不是fulfilled也不是rejected
  • fulfilled: 表示操作成功完成
  • rejected: 表示操作失败

一个Promise最终会是fulfilledrejected,但不会是pending

Promise 状态

Chained Promises / 链式使用

Promise.prototype.**then**()Promise.prototype.**catch**()Promise.prototype.**finally**()方法用于将进一步的操作与已确定的Promise相关联。这些方法返回Promise,可以进行链式使用。

Methods / 方法

Basic / 基础

Promise.resolve

resolve静态方法将给定值解析为Promise

如果该值是Promise,则返回该Promise

如果该值是thenableresolve将调用then方法并准备两个回调

否则返回的Promise将与该值一起实现

Promise.reject

reject静态方法返回一个以给定原因被拒绝的Promise对象

Advanced / 进阶

Promise.all

要求全部fulfilled

当所有Promisefulfilledfulfilled

当任何Promiserejectedrejected

Promise.allSettled

要求全部settled

当所有Promisesettledfulfilled或是rejected)时fulfilled

Promise.any

要求任意fulfilled

当任何Promise``fulfilledfulfilled

当所有Promiserejectedrejected

Promise.race

当任何Promise``settledsettled

换句话说,当任何Promise``fulfilledfulfilled;当任何Promise``rejectedrejected

Prototype Method / 原型方法

Promise.prototype.then

Promise实例的then方法最多需要两个参数:Promisefulfilledrejected情况的回调函数。它立即返回一个等效的Promise对象,允许链式调用其他Promise方法

Promise.prototype.catch

Promise实例的catch方法被设计为Promise``rejected时调用一个函数。它会立即返回一个等效的Promise对象,允许链式调用其他Promise方法

Promise.prototype.finally

Promise实例的finally方法会在Promisesettledfulfilledrejected)时被调用。该方法立即返回一个等效的Promise对象,允许链式调用其他Promise方法

这种方式可以帮助您避免在Promisethencatch处理程序中出现重复代码。