ES10 中的新特性:Promise.finally() 的使用方法及作用

阅读时长 4 分钟读完

在过去的几年中, JavaScript 的 Promise 功能已成为许多前端开发者的必备技能之一。ES10 的最新版本引入了 Promise.finally(),这位新成员将进一步提高 Promise API 的功能和可用性。这篇文章将带你深入了解该特性的使用方法及作用,并提供一些示例代码供参考。

Promise.finally() 的作用

Promise.finally() 方法是一个操纵 Promise 链程的方法,它在 Promise 解决或拒绝后执行,不论 Promise 的状态如何,无论 Promise 是否拒绝返回值,这个方法都会执行。该方法通过挂载在 Promise 链程上来执行后续的清理/赋值带有逻辑的代码段。

Promise.finally() 的语法

Promise.finally() 方法无需传递任何参数。它只需按如下方式使用:

Promise.finally() 返回一个新的 Promise,它记录在 Promise 操作完成时要继续执行的回调。

Promise.finally() 方法的使用实例

下面是一个基本示例,它演示了 Promise.finally() 方法隐藏的功能。

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

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

在上面的示例中,我们实现了一个简单的 Promise,向其传入两个方法:resolve 和 reject。如果返回成功,则记录一个计数,并向控制台打印一个响应内容,否则抛出错误。而在 finally 回调阶段,控制台记录了 Promise 的状态并执行了最后的发散清理。

Promise.finally() 方法的错误捕捉

如果不需要在 finally 块中抛出一个新的错误,则不需要单独的错误处理程序。Promise.finally() 方法将在最后一次尝试中添加日志记录或断言,如果有错误,则按照捕获错误的方式处理。

当代码执行到这一处时,finally 方法就会被执行,并输出“执行 finally 方法。”,这与前文中的示例相同。如果我们在 finally 中抛出了一个新的错误:则会输出新的错误而不是记录一个信息。

如果我们传递一个返回Promise对象的回调函数,则该方法需要在必要的情况下异步执行。如果在 finally 方法中返回改变了原值的新 Promise,则必须为该执行显示地指定它的结果,因为如果没有结果,不会抛出错误。

Promise.finally() 方法的总结

在 Promise API 中,finally 方法是一个神奇的方法,它不仅使我们可以同步在 Promise 链中执行最终的任务,而且不管 Promise 解决或拒绝,它都会被执行。最重要的是,finally 的返回值会影响 Promise 的结果,因此它可以与 then/catch 处理正确地被适用。希望本文中的内容对你有所帮助。

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

纠错
反馈