ES9 中的 Promise.prototype.finally() 方法全部掌握

ES9 中的 Promise.prototype.finally() 方法

Promise 是 ECMAScript6 中新增的对象,用于解决异步编程的问题,使得我们更加方便的处理异步操作。在 ES9 中,Promise.prototype.finally() 方法被添加到 Promise 的原型链中,用于处理最终的清理操作,本文将对该方法进行详细的介绍,并为读者提供示例代码。

  1. 简介

Promise.prototype.finally() 方法用于指定不管 Promise 状态如何都会执行的操作,可以理解为一种“收尾”的操作,无论 Promise 执行结果是成功还是失败,都可以在 finally 函数中进行一些善后工作。该方法不接受任何参数,也不能改变任何 Promise 状态。

  1. 语法

Promise.prototype.finally(): Promise

  1. 示例代码

3.1 Promise 状态成功

运行结果:

3.2 Promise 状态失败

运行结果:

  1. 深入理解

在 Promise 中,我们经常会遇到需要在 Promise 运行结束后处理一些清理操作的情况,例如关闭数据库连接、释放资源等等。在 ES6 之前我们可以通过在 then 和 catch 方法中分别执行代码来实现,但是如果执行结束后还需要进行一些清理工作的话,就需要写重复的代码,而且如果 Promise 的执行发生了错误,代码就会出现重复,不利于代码的维护。

在 ES9 中添加了 Promise.prototype.finally() 方法,来处理 Promise 运行结束后的一些清理操作,它会在 Promise 完成后,无论 Promise 是否成功,都会执行一段相应的代码。这样,我们就可以把与 Promise 相关的清理工作作为一个单独的方法,将其放入 finally 中,并且只需要编写一次即可。

另外,需要注意的是,Promise.prototype.finally() 方法本身不会改变 Promise 的状态,也就是说,它返回的 Promise 对象其状态与原来的 Promise 对象状态相同,但是它会在 Promise 完成时执行回调函数。

  1. 总结

Promise.prototype.finally() 方法是 ES9 新增的方法,用于对 Promise 运行结束后的一些清理操作进行处理。可以使我们更加方便地处理 Promise 相关的代码,减少代码的冗余。需要注意的是,它返回的 Promise 对象其状态与原来的 Promise 对象状态相同,但是它会在 Promise 完成时执行回调函数。

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


纠错
反馈