如何使用 ES10 中的 Promise.allSettled() 方法实现并行请求

阅读时长 4 分钟读完

在前端开发中,我们常常需要同时发起多个请求,以提高页面的性能和用户体验。ES10 中的 Promise.allSettled() 方法可以帮助我们实现并行请求,提高代码的可读性和可维护性。

Promise.all() 方法和 Promise.allSettled() 方法的区别

在介绍 Promise.allSettled() 方法之前,我们先来了解一下 Promise.all() 方法。

Promise.all() 方法用于将多个 Promise 实例包装成一个新的 Promise 实例,当所有的 Promise 实例都成功时,返回的 Promise 实例才会成功;当其中任意一个 Promise 实例失败时,返回的 Promise 实例就会失败。

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

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

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

Promise.allSettled() 方法也用于将多个 Promise 实例包装成一个新的 Promise 实例,不同的是,返回的 Promise 实例不会失败,而是会等待所有的 Promise 实例都 settled(即 fulfilled 或 rejected)后返回一个包含所有 Promise 实例状态的数组。

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

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

实现并行请求

使用 Promise.allSettled() 方法可以方便地实现并行请求,下面是一个简单的示例:

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

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

在这个示例中,我们首先定义了一个包含多个 URL 的数组,然后使用 map() 方法将每个 URL 转换成一个 fetch() 请求,并将所有请求的 Promise 实例传递给 Promise.allSettled() 方法。最后,我们可以遍历返回的结果数组,根据每个 Promise 实例的状态来处理响应数据或错误信息。

总结

使用 ES10 中的 Promise.allSettled() 方法可以方便地实现并行请求,提高代码的可读性和可维护性。我们可以将多个 Promise 实例传递给 Promise.allSettled() 方法,等待所有实例都 settled 后处理返回的结果数组。这个方法在实际开发中非常常用,建议掌握并灵活运用。

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

纠错
反馈