Promise 的扩展方法

Promise 是 JavaScript 中处理异步操作的一种方式,它提供了一种简单、直接的方式来处理异步操作。在 Promise 中,我们使用一组接口来处理异步操作的状态,以及获取异步操作的结果。虽然 Promise 本身是一个强大的工具,但是一些扩展方法可以使其更加强大,同时也更方便使用和维护。

Promise.finally()

Promise.finally() 方法用于指定一个在 Promise 对象完成之后会被执行的回调函数。该回调函数会在任何情况下都会被执行,无论 Promise 是否成功或失败,以及是否调用了 catch() 方法。

输出结果为:

我们可以看到在 Promise 成功后,finally() 方法也被执行了。如果 Promise 失败或未调用 catch() 方法,finally() 方法仍然会被执行。

Promise.allSettled()

Promise.allSettled() 方法接受一组 Promise 对象,并返回一个新的 Promise 对象。当所有 Promise 对象都已经被 settled(即已经成功或失败)后,该新的 Promise 对象会被 resolved,返回一个包含了所有 Promise 对象的结果数组。

输出结果为:

我们可以看到结果数组中包含了所有 Promise 对象的结果状态和值,以及失败的原因。

Promise.any()

Promise.any() 方法接受一组 Promise 对象,并返回一个新的 Promise 对象。当其中任意一个 Promise 对象成功后,该新的 Promise 对象会被 resolved,返回该 Promise 对象的值。如果所有 Promise 对象都失败,则该新的 Promise 对象也会被 rejected。

输出结果为:

我们可以看到 Promise.any() 方法在 p2 成功后被 resolved,并返回 p2 的值。

Promise.race()

Promise.race() 方法接受一组 Promise 对象,并返回一个新的 Promise 对象。当其中任意一个 Promise 对象 settled(即已经成功或失败)后,该新的 Promise 对象会被 resolved 或 rejected,返回该 Promise 对象的结果或失败原因。

输出结果为:

我们可以看到 Promise.race() 方法在 p1 成功后被 resolved,并返回 p1 的值。

总结

使用 Promise 扩展方法可以使 Promise 更加强大和方便使用,同时也能提高代码的可读性和维护性。我们可以根据应用场景和需求来灵活选择不同的扩展方法,并合理使用它们,以达到更好的开发效果和用户体验。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653e55077d4982a6eb7dac9c


纠错
反馈