如何使用 ES9 的 Promise.prototype.finally()

阅读时长 4 分钟读完

Promise.prototype.finally() 是 ES9 中引入的一个新特性,它允许在 promise 执行完成时无论结果是 fulfilled 还是 rejected,都执行一段代码。

通过使用 finally() 方法,可以让我们更加方便地管理 promise 链,同时也可以确保我们的清理函数能够被执行而不需要重复代码。本文将介绍 finally() 的使用方法,并提供详细的示例代码。

什么是 Promise.prototype.finally()?

finally() 是 Promise 原型的一个方法,可以在 promise 执行完成时无论结果如何,都会执行一段代码。这可以让我们在 promise 链中管理清理操作,而不需要将代码重复多次。同时,finally() 的返回值与 promise 的结果相同,因此可以将其使用在 promise 链中的任何位置。

如何使用 Promise.prototype.finally()

下面是 finally() 方法的基本语法:

onFinally 是一个函数,它将在 promise 执行完成时被调用。如果 promise 被 fulfilled 或者 rejected,该函数都会被执行。

需要注意的是,finally() 方法返回一个新的 promise,它的结果与原始 promise 的结果相同。如果 onFinally 函数返回一个 promise,则新的 promise 也将在 onFinally 函数返回的 promise 执行完成后完成。

下面是一个简单的示例,说明如何使用 finally()

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

这个示例中,finally() 方法被用于在 promise 执行完成时记录日志。即使 promise 被 rejected,finally() 方法也会执行。

使用 Promise.prototype.finally() 进行代码清理

Promise 是一种使用方便的异步编程模型,但是在 promise 链中进行代码清理却是一个挑战。使用 finally() 方法可以让我们更加方便地管理清理操作,而不需要将代码重复多次。

下面是一个例子,展示了如何在 promise 中使用 finally() 方法执行文件清理操作:

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

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

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

在这个示例中,我们使用了 finally() 方法,以确保文件的清理操作始终执行。即使一个前面的操作失败了,我们仍然可以确保我们的清理操作会被执行。

结论

ES9 中引入的 Promise.prototype.finally() 方法为 promise 链提供了一个便捷的方式,在执行完成后执行清理操作。使用 finally() 方法可以让我们避免将代码重复多次,同时也可以为 promise 链提供更好的清理管理。

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

纠错
反馈