新特性解析:ES11 新增的 Promise.allSettled 方法

阅读时长 4 分钟读完

在 JavaScript 的 ES11 版本中,新增了一个 Promise.allSettled 方法,该方法可以让我们更加方便地处理 Promise 一起执行的情况,本次文章将会详细解析该方法的使用和意义。

Promise.allSettled 方法的作用

Promise.allSettled 方法的作用是将传入的多个 promise 对象进行并行处理,当所有的 promise 对象都被处理完毕后,返回一个 promise 对象,该对象包含了传入的所有 promise 对象的状态和值。

与 Promise.all 方法不同的是,如果有任何一个 promise 对象被拒绝了,Promise.all 方法会立即返回一个拒绝的 promise 对象,并抛出错误,而 Promise.allSettled 方法则会在所有 promise 对象都被处理完毕后,返回一个包含所有 promise 对象状态和值的对象,包括拒绝的 promise 对象。

Promise.allSettled 方法的使用

下面我们来看一下 Promise.allSettled 方法的具体使用。

上面的代码中,我们新建了三个 promise 对象,其中 promise3 是被拒绝的。我们将这三个 promise 对象传入 Promise.allSettled 方法中进行处理,然后使用 then 方法获取处理结果。

当我们运行这段代码后,控制台输出如下:

从输出结果可以看出,Promise.allSettled 方法返回了一个对象数组,数组中包含了所有 promise 对象的状态和值,包括被拒绝的 promise 对象。

Promise.allSettled 方法的指导意义

Promise.allSettled 方法的新增为我们开发者提供了更加便捷的处理多个 promise 对象的方式。我们不需要再去考虑 Promise.all 方法无法返回拒绝的 promise 对象的问题,而是可以更加关注每个 promise 对象的处理结果,从而根据实际情况进行相应的处理。

我们可以根据各个 promise 对象的状态和值进行相应的操作,比如在上面的示例中,我们可以使用 filter 方法来过滤掉状态为“已拒绝”的 promise 对象,然后对状态为“已完成”的 promise 对象进行处理。

-- -------------------- ---- -------
----- -------- - -------------------
----- -------- - -------------------
----- -------- - ------------------------

----------------------------- --------- ----------
  ------------- -- -
    ----- ---------------- - --------------------- -- ------------- --- -------------
    ------------------------------
  --
  ------------ -- ----------------------

运行上述代码后,控制台输出结果为:

可以看出,我们已经成功地过滤掉了状态为“已拒绝”的 promise 对象,然后对状态为“已完成”的 promise 对象进行处理。

总结

在本文中,我们详细地解析了 ES11 中新增的 Promise.allSettled 方法的使用和意义,该方法可以方便地处理多个 promise 对象的状态和值,并且带来了便捷的操作方式,为我们开发者提供了更加便捷的处理 promise 对象的方式。希望本文对大家能够有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64679d46968c7c53b07fad7c

纠错
反馈