在 JavaScript 里,Promise
是用于处理异步操作的对象。它代表一个异步操作的最终完成(或失败)及其结果值,能有效避免回调地狱,让异步代码更易读和维护。
基本概念
-
三种状态
- pending:初始状态,既不是成功也不是失败。
- fulfilled:操作成功完成。
- rejected:操作失败。
-
状态转变
pending
→fulfilled
:调用resolve
函数。pending
→rejected
:调用reject
函数。- 状态一旦改变,就会永久保持该状态,不会再发生变化。
静态方法
- Promise.all(iterable)
- 所有 Promise 都成功时才成功,返回结果数组;
- 有一个失败则立即失败,返回第一个被拒绝的原因。
- Promise.race(iterable)
- 多个 Promise 中第一个完成的结果就是最终结果,无论成功或失败。
- Promise.allSettled(iterable)
- 返回一个在所有给定的 Promise 都已经
fulfilled
或rejected
后的 Promise,并带有一个对象数组,每个对象表示对应的 Promise 结果。
- 返回一个在所有给定的 Promise 都已经
- Promise.any(iterable)
- 只要有一个 Promise 成功就返回该 Promise 的结果;
- 如果所有 Promise 都失败,则抛出一个
AggregateError
。