ES8 的 Promise.prototype.finally() 方法

Promise 是实现异步编程的一种方式,通过它我们可以更容易地处理异步操作并避免回调地狱。ES8 中引入了 Promise.prototype.finally() 方法,允许我们在一个 Promise 链中注册一个回调函数,该回调函数在 Promise 完成后无论是成功还是失败都会被调用。

语法

Promise.prototype.finally() 方法接受一个回调函数作为参数,该回调函数不接受任何参数。回调函数在 Promise 链的末尾执行,所以无法获取 Promise 的状态或值。

用法

在实际的应用中,Promise.prototype.finally() 方法可以用来在 Promise 完成后做一些清理工作,比如关闭数据库连接、销毁资源等。

下面是一个简单的例子,来展示如何在 Promise 完成后打印一条日志信息:

上面代码中,Promise 链执行完后,无论是成功还是失败,都会打印一条 "Completed" 的日志信息。

注意事项

  • Promise.prototype.finally() 返回一个新的 Promise 对象,这意味着它不会修改原始的 Promise 对象。

  • 在旧的浏览器和特定的环境中可能没有这个方法,需要使用 polyfill 进行兼容处理。

  • 如果 callback 函数中抛出了一个异常,该异常将不会被 catch 捕获。

总结

ES8 的 Promise.prototype.finally() 方法为我们提供了一个更好用的方式来处理 Promise 链中无论成功或失败都需要执行的代码。它不仅简化了代码,而且提高了代码的可读性和可维护性。

使用 Promise.prototype.finally() 方法的要点:

  • 注册的回调函数不会改变 Promise 的状态或值。

  • 如果回调函数抛出异常,将不会被 catch 捕获。

  • 该方法可用于在 Promise 链中做清理工作,如关闭数据库连接、销毁资源等。

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


纠错
反馈