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