ES2020 中的全局 Promise 选项:Promise.any 和 Promise.allSettled

阅读时长 3 min read

在 ES2020 中,JavaScript 新增了两个全局 Promise 选项:Promise.any 和 Promise.allSettled。这两个方法都是 Promise.all 和 Promise.race 的补充,提供了更加灵活和细粒度的 Promise 处理方式,让开发者能够更好地控制 Promise 的处理逻辑。

Promise.any

Promise.any 表示任意一个 Promise 状态变为 resolve,就 resolve;如果所有 Promise 都变为 reject,就 reject。Promise.any 结果的返回值是第一个 resolve 的 Promise 的值。

如果 Promise1 变为 resolve,就会直接执行 then 方法里面的代码,输出 Promise1 的值;反之,如果 Promise1, Promise2 和 Promise3 都变为 reject,就会执行 catch 方法里面的代码,输出错误信息。

Promise.allSettled

Promise.allSettled 和 Promise.all 不同的地方在于,即使其中某些 Promise 被 reject,它也始终会返回一个数组。数组中的每个元素都代表了对应 Promise 的状态信息(fulfilled 或 rejected)以及值(如果 fulfilled)或原因(如果 rejected)。

如果其中某些 Promise 被 reject,它也始终会返回一个数组。数组中的每个元素都代表了对应 Promise 的状态信息(fulfilled 或 rejected)以及值(如果 fulfilled)或原因(如果 rejected)。

总结

ES2020 中的 Promise.any 和 Promise.allSettled 都是非常实用的全局 Promise 选项,可以让我们更加灵活地处理 Promise,并且在处理超时、故障和请求需求时提供更精细和细致的控制。使用这两个方法需要注意它们的实现方式和使用场景,可以帮助我们更好地完成需求功能。

以下是一个完整的示例代码:

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

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

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

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/64851bdf48841e989440a8b2

Feed
back