在 JavaScript 的 Promise 中,finally() 方法是一个非常有用的方法。ES10 中新增了 Promise.prototype.finally() 方法,允许在一个 Promise 被 resolved 或 rejected 之后,无论结果如何,都会执行一段代码。
本文将介绍 Promise.prototype.finally() 方法的使用和应用场景,详细讲解该方法的特性、语法和参数以及示例代码,帮助前端开发者深入理解 Promise,并将其运用到实战项目中。
Promise.prototype.finally() 方法的特性
Promise.prototype.finally() 方法允许在 Promise 结束时使用一段代码。这个方法不管 Promise 是 resolved(已完成)还是 rejected(已拒绝)都会执行。 finally() 方法不能修改 Promise 的结果,仍然返回原来的 Promise 。
语法
Promise.prototype.finally(fn)
- fn(必需):一个回调函数,在 Promise 结束时都会执行。
返回值
Promise 对象,具有原 Promise 的状态和值。
Promise.prototype.finally() 方法的应用场景
在 Promise 中,finally() 方法最常用于清理操作,例如关闭文件或网络连接。
Promise.prototype.finally() 方法还可以使用多个 Promise 一起执行。例如,在 Promise 中添加 finally() 表明,在 Promise 合成程序执行时,无论 Promise 被 resolved 或 rejected,执行程序将交付。
以下场景是使用 Promise.prototype.finally() 方法的典型案例:
- 清理操作
- 记录日志信息
- 发送数据请求
- 确认代码的结果
Promise.prototype.finally() 方法的示例代码
下面是一个简单的示例,讲解了如何使用 Promise.prototype.finally() 方法进行文件 I/O 操作的清理和日志记录。
-- -------------------- ---- ------- ----- -- - -------------- -------- ------------------ - ------ ------------------------------ ---------------- -- - --------------------------------- -- ------------ -- - ------------------- -- ----------- -- - ----------------- ----------- ---------- --- - -----------------------
在此示例中,我们使用 fs.promises.readFile() 方法读取文件。在异步操作完成后,如果文件 I/O 操作成功,我们将内容显示在控制台上。
如果文件 I/O 操作失败,则会打印错误信息。不管是结果如何,finally() 方法都将被调用并显示消息 'File myfile.txt closed.'。
结论
在本文中,我们讲解了 ES10 中新增的 Promise.prototype.finally() 方法,介绍了其在执行完 Promise 后执行代码的功能和应用场景。我们还提供了示例代码,以帮助前端开发者了解该方法的详细语法和参数。
通过使用 Promise.prototype.finally() 方法,前端开发者可以更好地掌握 Promise 的特性,将其运用于实际项目中。如果您还没有尝试使用 Promise.prototype.finally() 方法,请在实战中应用所学知识,加深对 JavaScript Promise 的理解。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674ebac8e884a3e30f297199