Promise.prototype.finally()
是 ES9 中引入的一个新特性,它允许在 promise 执行完成时无论结果是 fulfilled 还是 rejected,都执行一段代码。
通过使用 finally()
方法,可以让我们更加方便地管理 promise 链,同时也可以确保我们的清理函数能够被执行而不需要重复代码。本文将介绍 finally()
的使用方法,并提供详细的示例代码。
什么是 Promise.prototype.finally()?
finally()
是 Promise 原型的一个方法,可以在 promise 执行完成时无论结果如何,都会执行一段代码。这可以让我们在 promise 链中管理清理操作,而不需要将代码重复多次。同时,finally()
的返回值与 promise 的结果相同,因此可以将其使用在 promise 链中的任何位置。
如何使用 Promise.prototype.finally()
下面是 finally()
方法的基本语法:
promise.finally(onFinally);
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