Promise 中 finally 方法的作用及使用场景

阅读时长 5 分钟读完

在前端开发中,我们经常会用到 Promise 对象。Promise 提供了一种更灵活、可读性更强的方式来处理异步操作。Promise 有三种状态:pending(等待状态)、fulfilled(成功状态)和rejected(失败状态)。当一个 Promise 转为 fulfilled 或 rejected 状态时,就称为该 Promise 已经 settled。

Promise 中的 then 方法通常用来处理 settled 状态。但是当需要在 settled 状态下执行一些清理操作时,我们就需要用到 finally 方法了。本文将详细介绍 Promise 中的 finally 方法的作用及使用场景,并提供示例代码。

finally 方法的作用

finally 方法用来指定不管 Promise 转为哪种 settled 状态,都要执行的操作,比如释放资源或清理代码等。finally 方法的语法如下:

其中,promise 表示要调用 finally 方法的 Promise 对象,而 onFinally 则是一个回调函数,表示 finally 方法要执行的操作。onFinally 回调函数不接受任何参数,也无法获取到原始的 resolve 或 reject 函数的返回值。

finally 方法的使用场景

下面我们来看一些使用场景实例。

1. 统计代码执行时间

我们可以在 Promise 的开始和结束时,分别记录下时间,然后在 finally 方法中计算两者时间差,以此统计出代码执行的时间。示例如下:

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

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

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

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

2. 手动改变 Promise 的 settled 状态

如果我们想手动改变 Promise 的 settled 状态,可以在 finally 方法中调用 resolve 或 reject 方法。示例如下:

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

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

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

3. 释放资源

当 Promise 内部有大量的异步操作需要处理时,会导致内存占用较大。此时,我们可以在 finally 阶段释放一些占用内存的资源,以避免内存泄漏。

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

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

总结

finally 方法是 Promise 中非常有用的方法,可以用于资源清理、统计执行时间等场景。需要注意的是,finally 方法是无法改变 Promise 的 settled 状态的,它只是在 Promise settled 后进行的操作。

在实际项目开发中,我们需要充分了解 finally 方法的使用方法和场景,以便更好地发挥 Promise 对象的优势,提高代码效率和可扩展性。

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

纠错
反馈