ES9 新功能:Promise.allSettled()

阅读时长 4 分钟读完

在 JavaScript 的 Promise 中,我们经常使用 Promise.all() 来等待多个 Promise 对象完成后再进行下一步操作。但是,如果其中一个 Promise 对象出现了错误,整个 Promise.all() 就会被拒绝。ES9 中,新增了 Promise.allSettled() 方法,可以在所有 Promise 对象都完成后返回一个包含每个 Promise 状态的数组,无论 Promise 对象是否成功。

Promise.all() 的问题

在使用 Promise.all() 时,如果其中一个 Promise 对象出现了错误,整个 Promise.all() 就会被拒绝,导致后续代码无法执行。例如:

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

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

上述代码中,promise2 被拒绝,导致整个 Promise.all() 被拒绝,后续代码无法执行。

Promise.allSettled() 的解决方案

ES9 中,新增了 Promise.allSettled() 方法,可以在所有 Promise 对象都完成后返回一个包含每个 Promise 状态的数组,无论 Promise 对象是否成功。例如:

上述代码中,即使 promise2 被拒绝,Promise.allSettled() 也会返回一个包含每个 Promise 状态的数组,结果如下:

Promise.allSettled() 的应用场景

Promise.allSettled() 方法可以用于在多个异步任务完成后,对每个任务的状态进行处理。例如:

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

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

上述代码中,Promise.allSettled() 方法用于等待多个异步请求完成后,对每个请求的结果进行处理。

总结

ES9 新增的 Promise.allSettled() 方法解决了 Promise.all() 方法在其中一个 Promise 对象出现错误时无法继续执行的问题。它可以在所有 Promise 对象都完成后返回一个包含每个 Promise 状态的数组,无论 Promise 对象是否成功。在实际开发中,我们可以使用 Promise.allSettled() 方法来等待多个异步任务完成后,对每个任务的状态进行处理。

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

纠错
反馈