如何使用 ECMAScript 2018 中新增的 Promise.finally 方法?

在前端开发中,异步编程是非常常见的。而 Promise 是一种在 JavaScript 中进行异步编程的方式。在 ECMAScript 2018 中,Promise 新增了一个 Promise.finally 方法,它可以让我们在 Promise 执行结束后,无论是成功还是失败,都能够执行一些操作。本文将介绍 Promise.finally 方法的用法和注意事项。

Promise.finally 方法的用法

Promise.finally 方法接收一个回调函数作为参数,该回调函数会在 Promise 执行结束后调用。无论 Promise 是成功还是失败,该回调函数都会被执行。该回调函数不接收任何参数,也不会改变 Promise 的状态。

下面是 Promise.finally 方法的基本用法:

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

下面是一个示例代码,展示了 Promise.finally 方法的用法:

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

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

注意事项

在使用 Promise.finally 方法时,需要注意以下几点:

1. Promise.finally 方法不改变 Promise 的状态

Promise.finally 方法不会改变 Promise 的状态。如果 Promise 处于成功状态,那么在 finally 方法中返回一个失败的 Promise,也不会改变 Promise 的状态。

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

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

2. Promise.finally 方法的返回值不会影响后续的 then 方法

Promise.finally 方法的返回值不会影响后续的 then 方法。如果在 finally 方法中返回一个新的 Promise,那么后续的 then 方法会接收到前一个 Promise 的结果,而不是新的 Promise 的结果。

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

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

3. Promise.finally 方法的回调函数不接收任何参数

Promise.finally 方法的回调函数不接收任何参数。如果需要在 finally 方法中访问 Promise 的结果或错误信息,可以使用 Promise.then 方法或 Promise.catch 方法。

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

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

结论

Promise.finally 方法是 ECMAScript 2018 中新增的一个方法,它可以让我们在 Promise 执行结束后,无论是成功还是失败,都能够执行一些操作。在使用该方法时,需要注意它不会改变 Promise 的状态,它的返回值不会影响后续的 then 方法,以及它的回调函数不接收任何参数。

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