在前端开发中,我们经常会用到 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(onFinally);
其中,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