在 ES2017/ES8 中,Promise 对象新增了一个方法 finally()
,用于指定不管 Promise 对象最终状态如何,都会执行的操作。在这篇文章中,我们将深入探讨 finally()
方法的使用方法和指导意义。
Promise 的基础知识
在深入探讨 finally()
方法之前,我们需要先了解 Promise 的基础知识。Promise 是一种异步编程的解决方案,它可以让我们更方便地处理异步操作。Promise 对象有三种状态:pending
(进行中)、fulfilled
(已成功)和 rejected
(已失败)。当 Promise 对象的状态从 pending
转变为 fulfilled
或 rejected
时,我们称之为 Promise 对象被“解决(settled)”。
Promise 对象的基本用法如下:
-- -------------------- ---- ------- ----- ------- - --- ----------------- ------- -- - -- ---- -- --- ------ --- - --------------- -- - ------- -------- --------------- ----- - - ---- - -------------- -- - ------- -------- -------------- ----- - - --- ------------------ -- - -- ------- ----------- --------- -------------- -- - -- ------- ----------- -------- ---
Promise.prototype.finally() 的使用方法
finally()
方法可以用于指定在 Promise 对象被解决(settled)后,无论其状态是 fulfilled
还是 rejected
,都会执行的操作。finally()
方法接受一个回调函数作为参数,这个回调函数在 Promise 对象被解决后会被调用。这个回调函数不接受任何参数,也不会改变 Promise 对象的状态。
finally()
方法的使用方法如下:
-- -------------------- ---- ------- ------- ----------- -- - -- ------- ----------- --------- -- ------------ -- - -- ------- ----------- -------- -- ----------- -- - -- -- ------- --------------- ---
Promise.prototype.finally() 的指导意义
finally()
方法的主要作用是在 Promise 对象被解决后执行一些清理操作,例如关闭资源、取消订阅等。finally()
方法还可以用于在 Promise 对象被解决后执行一些通知操作,例如向用户显示一个提示信息。
finally()
方法的另一个指导意义是可以避免代码重复。在以前的版本中,我们通常需要在 then()
和 catch()
方法中分别执行一些代码,例如关闭资源。使用 finally()
方法可以避免这种重复代码的出现。
Promise.prototype.finally() 的示例代码
下面是一个使用 finally()
方法的示例代码。这个代码使用 Promise 对象模拟了一个异步操作,然后使用 finally()
方法在 Promise 对象被解决后执行了一些清理操作。
-- -------------------- ---- ------- -------- ------------------------ - ------ --- ----------------- ------- -- - ------------- -- - ----- ------------ - -------------- -- ------------- - ---- - ---------------------- - ---- - ---------- ------------- ------ -- ---- ---- ------- - -- ------ --- - ------------------------ ----------- -- - ------------------ --------- --------- ---- ----- ----------- -- ------------ -- - -------------------- --------- ------ ---- ----- ------------------- -- ----------- -- - --------------------- -- --------------- ---
总结
在 ES2017/ES8 中,Promise 对象新增了一个方法 finally()
,用于指定在 Promise 对象被解决后执行的操作。finally()
方法的主要作用是在 Promise 对象被解决后执行一些清理操作,避免代码重复。finally()
方法的使用方法非常简单,只需要在 then()
和 catch()
方法后面添加一个 finally()
方法即可。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65c0d64badd4f0e0ffad2493