ES9 新增 Promise.prototype.finally()

阅读时长 3 分钟读完

在 JavaScript 的 Promise 中,我们经常需要执行一些无论 Promise 成功或失败都要执行的代码。在 ES9 中,Promise 增加了一个新的方法 Promise.prototype.finally(),可以在 Promise 执行结束后,无论 Promise 对象结果成功或失败,都执行一些操作。

为什么需要 finally()

在 Promise 中,我们经常需要执行一些后续逻辑,比如关闭资源等操作。如果使用 then() 方法,则需要在成功和失败的回调函数中都进行相同的操作。而使用 catch() 方法,则只能在 Promise 失败时执行操作,并不能在成功时执行操作。

使用 finally() 方法,可以避免上述问题,将无论成功或失败都要执行的操作封装在该方法中,大大简化了代码。

使用方式

finally() 方法的使用方式和其它 Promise 方法类似,它接受一个函数作为参数,该函数会在 Promise 执行结束后被调用。

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

示例代码

下面是一个简单的使用示例,模拟 Promise 的成功和失败,并在 finally() 中输出一句话。

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

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

当 Promise 执行成功时,输出结果为:

当 Promise 执行失败时,输出结果为:

总结

Promise.prototype.finally() 方法是 ES9 新增的一个方法,它能够在 Promise 执行结束后,无论结果成功或失败,都执行一些操作。使用该方法可以将无论成功或失败都要执行的操作封装在该方法中,避免代码冗余。

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

纠错
反馈