如何使用 ES11 中的 Promise.allSettled 方法实现批量异步请求

阅读时长 3 分钟读完

如何使用 ES11 中的 Promise.allSettled 方法实现批量异步请求

在前端开发中,经常需要发送多个异步请求,这时候我们可以使用 Promise.all 方法来处理,但是如果其中一个请求失败了,整个异步请求就会失败,这对我们的业务逻辑可能会造成一定的影响。ES11 中新增了 Promise.allSettled 方法,它能够处理所有异步请求,并且会返回一个包含所有请求结果的数组。

Promise.allSettled 方法的参数是一个 Promise 数组,它能够处理传入的所有 Promise,并且不会因为其中一个 Promise 失败而终止。它会等待所有 Promise 处理完成后,返回一个数组,其中包含所有 Promise 的执行结果。

使用该方法进行批量异步请求的步骤如下:

  1. 将需要发送的请求存放在一个数组中
  2. 使用 Array.map 方法,将每个请求封装成一个 Promise 对象
  3. 将 Promise 数组传入 Promise.allSettled 方法中
  4. 对返回的结果进行处理

以下是一个例子,模拟从服务器获取数据并处理的场景。

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

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

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

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

在上面的示例中,我们模拟了一个从服务器获取数据的场景,使用 Promise.allSettled 方法实现了批量异步请求,并对返回结果进行了处理。

结论:

Promise.allSettled 方法解决了 Promise.all 中只有一个 Promise 失败导致整个异步请求失败的问题,能够处理所有 Promise,并且不会因为其中一个 Promise 失败而导致终止。在处理多个异步请求时,我们应该优先考虑使用 Promise.allSettled 方法,它能够更好地保证代码的健壮性。

参考资料:

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

纠错
反馈