ES11 中的 Promise.allSettled:更好的错误匹配

阅读时长 2 分钟读完

ES11 中的 Promise.allSettled:更好的错误匹配

Promise.allSettled() 是 ES11 新增的 Promise API,它是用来处理多个 Promise 实例的方法,与 Promise.all() 和 Promise.race() 类似,但是与它们不同的是,Promise.allSettled() 不会在任意一个 Promise 实例 reject 时中断,而是会等到所有 Promise 都 settle 后再返回结果。

在实际应用中,当我们需要批量发起请求或执行一组异步操作时,使用 Promise.allSettled() 可以更好地处理错误匹配,而非像 Promise.all() 一样一旦有一项操作失败就抛出错误。

示例代码:

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

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

在上述例子中,我们发起了四个异步请求,使用 Promise.allSettled() 处理了这四个请求的返回值,其中 result.status 可以为 'fulfilled' 或 'rejected',根据 status 判断操作是否成功,从而进行相应的处理。

另外,需要注意的是,Promise.allSettled() 返回的是一个 Promise 对象,因此需要使用 .then() 或 async/await 来获取其返回值。

总结

Promise.allSettled() 是一种更好的处理多个 Promise 实例的方式,它可以更好地处理错误匹配问题,避免了 Promise.all() 的错误中断机制,使得代码更加健壮和可靠。但是,需要注意在实际使用中需要根据实际情况判断 error 的类型和处理方式,避免出现潜在的问题。

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

纠错
反馈