Promise 的状态及方法
Promise 的三种状态
- Pending(进行中):Promise 对象初始的状态。这表示操作正在进行中,但尚未完成。
- Fulfilled(已完成):Promise 对象成功完成操作时的状态。当操作成功执行并返回结果时,Promise会进入这个状态。
- Rejected(已拒绝):Promise 对象操作失败时的状态。如果操作出现错误或被拒绝,则Promise会进入这个状态。
Promise 的实例方法
promise.then(onFulfilled, onRejected)
:在Promise对象的状态变为fulfilled(已完成)或rejected(已拒绝)时,分别执行相应的回调函数。(该方法也可以只传递第一个参数,即只指定 Promise 对象成功时的回调函数)promise.catch(onRejected)
:在Promise对象的状态变为rejected(已拒绝)时,执行相应的回调函数。相当于then的第二个参数。promise.finally(onFinally)
:在Promise对象的状态变为fulfilled或rejected时,执行一个回调函数,无论结果如何。
Promise 的静态方法
Promise.resolve(value)
:返回一个状态为不定的Promise对象,并将传入的值作为该Promise对象的结果。
- 当传入的 value 为非 Promise 值,或为 fulfilled 的 Promise 值,此时 resolve 方法返回的才是一个 fulfilled 返回的一个 Promise 对象
- 当传入的 value 是一个 Promise 值,此时 resolve 方法返回的 Promise 对象的状态由该传入的 Promise 决定
Promise.reject(reason)
:返回一个状态为rejected的Promise对象,并将传入的错误作为该Promise对象的结果。Promise.all(iterable)
:接收一个包含多个Promise对象的可迭代对象(如 Promise 数组),并返回一个新的Promise。
- 所有 Promise 都 fulfilled ==> 返回的 Promise 才是 fulfilled,结果为所有 Promise 的结果构成的数组
- 存在一个 Promise 为 rejected ==> 返回的 Promise 立即变为 rejected,结果为第一个 rejected 的 Promise
Promise.allSettled(iterable)
:接收一个包含多个Promise对象的可迭代对象,并返回一个新的Promise。
- 所有的 Promise 都 settled(状态要么为 fulfilled,要么为 rejected)==> 返回的 Promise 才是 fulfilled,结果为所有 Promise 结果构成的数组
Promise.race(iterable)
:接收一个包含多个Promise对象的可迭代对象,并返回一个新的Promise。
- 第一个传入的 Promise 变为 settled(状态要么为 fulfilled,要么为 rejected)==> 返回的 Promise 就是该对象的状态
Promise.any(iterable)
:接收一个包含多个Promise对象的可迭代对象,并返回一个新的Promise。
- 存在一个 Promise 变为 fulfilled ==> 返回的 Promise 就是 fulfilled
- 所有 Promise 都为 rejected ==> 返回的 Promise 才为 rejected
实例方法
then
catch
finally
静态方法
resolve (失败、成功、等待)
rejected (失败)
all (全成功才算成功,有一个失败就算失败)
allSettled (全状态改变才算成功)
race (以第一个改变状态的 Promise 为准)
any (只要有一个成功就算成功,全部失败才算失败)