9 Promising Promise Tips

阅读时长 5 分钟读完

JavaScript Promise 是一种解决异步编程问题的强大机制。它是一个经典的 JavaScript 设计模式,已被广泛采用和支持。在本文中,我们将介绍 9 个有前途的 Promise 技巧,这些技巧能够更好地利用 Promise 的优势。

1. 使用 Promise.allSettled()

Promise.allSettled() 方法返回一个 promise,该 promise 解决为一个数组,该数组包含所有传递给它的 promise 的状态,无论它们是否成功。这意味着即使其中一个 promise 失败了,也不会抛出异常,而是会返回一个对象数组,每个对象都包含有关该 promise 状态的信息。

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

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

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

2. 使用 Promise.race() 实现超时

Promise.race() 方法接收一个 promise 列表并返回第一个执行完毕(无论是成功还是失败)的 promise ,其他的 promise 被忽略。我们可以利用这个特性来实现一个简单的超时功能。

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

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

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

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

3. 使用 Promise.any() 解决“赛跑”问题

Promise.any() 方法接收一个 promise 列表并返回第一个执行成功的 promise,其他的 promise 被忽略。与 Promise.race() 不同的是,如果所有传递给它的 promise 都失败了,则会返回一个 AggregateError 对象。

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

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

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

4. 使用 Promise.resolve() 和 Promise.reject() 模拟同步行为

在 JavaScript 中,异步操作通常需要使用 Promise。但是,有时候您想要模拟同步行为,这时可以使用 Promise.resolve() 或 Promise.reject() 来创建一个已经完成或已经失败的 Promise 对象。

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

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

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

5. 使用 Promise.try() 处理同步和异步异常

Promise.try() 方法尝试调用一个函数,并返回一个 Promise 对象。如果该函数抛出了一个错误,它将被捕获并作为 Promise 的拒绝原因返回。

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

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

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

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

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

6. 使用 Promise.finally() 处理清理操作

Promise.finally() 方法指定在 Promise 结束

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

纠错
反馈