ES10 中 Promise.allSettled() 方法的使用与注意事项

阅读时长 3 分钟读完

ES10 中 Promise.allSettled() 方法的使用与注意事项

Promise.allSettled() 是 ES10 新增的 Promise 方法,其作用是接收一个 Promise 数组并返回一个新的 Promise,该新 Promise 的状态会在所有传入的 Promise 都执行完成之后确定。与 Promise.all() 不同的是,Promise.allSettled() 将会等待所有的 Promise 执行完成,而不管其是否成功或失败,之后返回一个包含所有完成状态的 Promise 结果对象数组。这使得我们可以避免使用 try...catch 捕获每个可能出现错误的 Promise 的异常,并可以轻松获取每个 Promise 完成情况的详细信息。

使用示例:

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

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

结果:

注意事项:

  1. Promise.allSettled() 返回的是一个 Promise,因此需要使用 then() 或 async/await 来获取结果。

  2. 确保所有传入的 Promise 都执行完成后再使用 Promise.allSettled(),否则将只返回执行完成的 Promise 数组结果。

  3. 结果对象数组中的每个元素都包含以下三个属性:

    • status:表示 Promise 的状态,可能值为 fulfilled 或 rejected。

    • value:表示 Promise 成功时的结果,如果 Promise 失败则该属性值为 undefined。

    • reason:表示 Promise 失败时的原因,如果 Promise 成功则该属性值为 undefined。

总结:

使用 Promise.allSettled() 方法可以轻松获取多个 Promise 的执行状态和结果,无需为每个 Promise 单独添加 try...catch 块以捕获异常。同时,由于同时等待多个 Promise,因此可以提高代码的执行效率,对于需要并发执行多个操作的情况非常有用。在使用时,需要注意传入的 Promise 数组是否执行完成,以及返回结果数组中每个元素的状态、值和原因。

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

纠错
反馈