ES9 中出现的 Promise.prototype.finally 方法

阅读时长 4 分钟读完

在 ES9 中,Promise 新增了一个非常有用的方法:Promise.prototype.finally。它可以在 Promise 执行完毕后,无论成功还是失败,都能够执行一些操作。

Promise.prototype.finally 基本语法

Promise.prototype.finally 方法非常简单,其基本语法如下:

其中,promise 指定一个 Promise 对象,onFinally 指定一个回调函数,在 Promise 执行完毕后执行。

Promise.prototype.finally 的作用

Promise.prototype.finally 方法的作用在于,我们不必区分 Promise 是否 fulfilled 或 rejected,而统一处理它们执行完毕后的情况。比如,无论 Promise 是否成功,我们都希望在完成后执行一些清理操作。这时,可以使用 Promise.prototype.finally 方法。

Promise.prototype.finally 示例

下面我们来看几个简单的 Promise.prototype.finally 示例代码。

示例一

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

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

在上面的示例中,我们创建了一个新的 Promise 对象,并立即解决该 Promise。然后,我们使用 then() 方法来处理 fulfilled 状态的 Promise,并使用 catch() 方法处理 rejected 状态的 Promise。最后,我们使用 finally() 方法来为 Promise 添加一个清理方法,无论 Promise 成功还是失败,都会在执行完毕后被调用。

示例二

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

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

在上面的示例中,我们创建了一个新的 Promise 对象,并立即拒绝该 Promise。然后,我们使用 then() 方法来处理 fulfilled 状态的 Promise,并使用 catch() 方法处理 rejected 状态的 Promise。最后,我们使用 finally() 方法来为 Promise 添加一个清理方法,无论 Promise 成功还是失败,都会在执行完毕后被调用。

Promise.prototype.finally 方法的优点

使用 Promise.prototype.finally 方法的优点在于,它与 Promise.prototype.then() 方法唯一的区别在于,它不管 Promise 状态如何都会执行。这种一定性使得我们可以无需在不同情况下编写不同的代码逻辑。因此,在实际开发中,我们应该更加灵活地使用 Promise.prototype.finally 方法,使代码更加简洁、清晰、易于维护。

总结

在本篇文章中,我们介绍了 ES9 中出现的 Promise.prototype.finally 方法以及其作用。我们通过示例代码演示了如何使用该方法实现清理操作。最后,我们强调了使用 Promise.prototype.finally 方法的优点,以及在实际开发中应如何合理地使用该方法。

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

纠错
反馈