feng xiaohan

Promise

注意不是实例上的方法。

  • any():传入一个 promise 实例 数组,返回第一个 fulfiiled promise 的值,如果都 rejected,则会在 catch 中捕获到 All promises were rejected,并且包含一个 reject 函数传递值得数组。
  • all():传入一个 promise 实例 数组,返回一个 fulfiiled promise 的值的数组,如果有一个 rejected,则会在 catch 中捕获第一个 reject 函数传递值得数组。

    webpack 的动态组件引入是借助的Promise.all()

  • allSettled():传入一个 promise 实例 数组,返回所有 promise 的值的数组,无论是 fulfilled 还是 rejected
  • race():传入一个 promise 实例 数组,返回第一个被处理的 promise 的值,无论 fulfilled 还是 rejected

2024 新特性。

  • withResolvers():解构 promise,可以让我们在外面使用 resolve、reject 函数。
({ promise, resolve, reject } = Promise.withResolvers());

火狐暂不支持。

  • try():可以简化在 promise 中 resolve 一个函数的写法,该函数也需要返回值、抛出异常或者返回一个 promise。
function test() {
  return 1;
} // 可异步

Promise.try(test).then((res) => {
  console.log(res);
});