ECMAScript 2019(ES10):详解 Promise.prototype.finally() 方法的用途

前言

在 JavaScript 中,Promise 是处理异步编程的一种方式。它可以让我们更加方便地处理异步操作,避免了回调地狱的问题。在 ES6 中,Promise 被正式引入到了 JavaScript 中,而在 ES10 中,Promise 又新增了一个方法:Promise.prototype.finally()。

Promise.prototype.finally() 方法

Promise.prototype.finally() 方法可以在一个 Promise 执行结束后,无论结果是成功还是失败,都会执行一段代码。这个方法接收一个回调函数作为参数,这个回调函数不接收任何参数。

Promise.prototype.finally() 方法返回的依然是一个 Promise,它的状态和原来的 Promise 状态一致,但是在执行完回调函数后会返回一个新的 Promise 对象,而不是原来的 Promise 对象。

用途

Promise.prototype.finally() 方法的用途主要有两个:

  1. 在 Promise 执行结束后,无论结果是成功还是失败,都需要执行一段代码,比如关闭文件或者释放资源等。
-------- ------------------ -
  ------ --- ------------------------- ------- -
    --- ------- - --- -----------------
    ------------------- ----- ------
    -------------------------- - ---------- -
      -- ------------------- --- -- -
        -- --------------- --- --- -- -------------- -- -- -
          ------------------------------
        - ---- -
          ---------------------------
        -
      -
    --
    -------------------
  ---
-

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

在这个例子中,我们使用 Promise 来读取文件。在文件读取成功或者失败后,都需要执行一段代码来关闭文件。使用 Promise.prototype.finally() 方法可以让我们更加方便地实现这个功能。

  1. 在 Promise 执行结束后,需要执行一段代码,并且需要对 Promise 的结果进行处理。
-------- ----------- -
  ------ -----------------------------------------------------
    -------------- -- ----------------
    ---------- -- -
      ------------------
      ----- --- ------------ ------------
    --
    ------------ -- -
      ---------------------
      ------ - -------- ------ ---------- --
    --
    ----------- -- -
      ------------------ ---- ------------
    ---
-

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

在这个例子中,我们使用 fetch 来获取数据。在获取数据后,我们需要对数据进行处理,如果处理过程中出现了错误,我们需要返回一个错误信息。使用 Promise.prototype.finally() 方法可以让我们更加方便地实现这个功能。

总结

Promise.prototype.finally() 方法是一个很有用的方法,它可以让我们在 Promise 执行结束后,无论结果是成功还是失败,都执行一段代码。使用它可以让我们更加方便地处理 Promise 的结果,并且避免了重复代码的出现。

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