ES9 (2018) 新特性:Promise.prototype.finally()

阅读时长 4 分钟读完

Promise 是 JavaScript 异步编程中非常重要的一部分,它提供了一种处理异步操作结果的方式。在 ES9(2018)中,Promise 增加了一个新的方法:Promise.prototype.finally()。本文将详细介绍这个新方法的特性、学习和指导意义,并提供示例代码。

Promise.prototype.finally() 的特性

Promise.prototype.finally() 方法是在 Promise 对象状态变为 resolved 或 rejected 后,无论 Promise 对象最终状态如何,都会执行指定的回调函数。这个方法与 Promise.prototype.then() 很相似,但是它不管 Promise 对象的状态如何都会执行指定的回调函数,而 Promise.prototype.then() 只在 Promise 对象状态变为 resolved 才会执行指定的回调函数。

Promise.prototype.finally() 方法的语法如下:

其中,promise 是一个 Promise 对象,onFinally 是一个回调函数,它会在 Promise 对象状态变为 resolved 或 rejected 后执行。

Promise.prototype.finally() 的学习和指导意义

Promise.prototype.finally() 方法的出现,使得我们可以在 Promise 对象状态变为 resolved 或 rejected 后执行一些清理工作。比如,我们可以在 Promise 对象状态变为 resolved 或 rejected 后,关闭一些资源,清除一些临时数据等等。

另外,Promise.prototype.finally() 方法还可以和 Promise.prototype.catch() 方法一起使用。比如,我们可以在 Promise 对象状态变为 rejected 后,使用 Promise.prototype.catch() 方法捕获错误,然后使用 Promise.prototype.finally() 方法执行一些清理工作。

Promise.prototype.finally() 的示例代码

下面是一个使用 Promise.prototype.finally() 方法的示例代码:

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

---------------
  ---------------------- -
    --------------------
  --
  ---------------------- -
    -------------------
  --
  ------------------- -
    -----------------------
  ---
展开代码

在上面的示例代码中,asyncFunction() 函数返回一个 Promise 对象,它会在 1 秒后返回一个 resolved 状态的 Promise 对象。然后,我们使用 Promise.prototype.then() 方法和 Promise.prototype.catch() 方法分别处理 resolved 和 rejected 状态的 Promise 对象,最后使用 Promise.prototype.finally() 方法执行一些清理工作。

总结

Promise.prototype.finally() 方法是 ES9(2018)中新增的一个方法,它可以在 Promise 对象状态变为 resolved 或 rejected 后执行指定的回调函数。这个方法的出现使得我们可以在 Promise 对象状态变化后执行一些清理工作,具有很大的实用价值。

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

纠错
反馈

纠错反馈

程序员教程

精选优质教程,助你快速提升技术实力

程序员面试题库

海量优质面试题,助你轻松应对技术面试