在 JavaScript 的 Promise 中,我们经常需要执行一些无论 Promise 成功或失败都要执行的代码。在 ES9 中,Promise 增加了一个新的方法 Promise.prototype.finally()
,可以在 Promise 执行结束后,无论 Promise 对象结果成功或失败,都执行一些操作。
为什么需要 finally()
在 Promise 中,我们经常需要执行一些后续逻辑,比如关闭资源等操作。如果使用 then()
方法,则需要在成功和失败的回调函数中都进行相同的操作。而使用 catch()
方法,则只能在 Promise 失败时执行操作,并不能在成功时执行操作。
使用 finally()
方法,可以避免上述问题,将无论成功或失败都要执行的操作封装在该方法中,大大简化了代码。
使用方式
finally()
方法的使用方式和其它 Promise 方法类似,它接受一个函数作为参数,该函数会在 Promise 执行结束后被调用。
-- -------------------- ---- ------- ------- ------------ -- - -- ---- -- ------------ -- - -- ---- -- ----------- -- - -- -------------- --
示例代码
下面是一个简单的使用示例,模拟 Promise 的成功和失败,并在 finally()
中输出一句话。
-- -------------------- ---- ------- ----- ------- - --- ----------------- ------- -- - ----- ------------ - -------------- -- ------------- - ---- - -------------- - ---- - ------------- - --- ------- ------------ -- - -------------------- -- ------------ -- - ------------------- -- ----------- -- - -------------------- ---
当 Promise 执行成功时,输出结果为:
成功 操作结束
当 Promise 执行失败时,输出结果为:
失败 操作结束
总结
Promise.prototype.finally()
方法是 ES9 新增的一个方法,它能够在 Promise 执行结束后,无论结果成功或失败,都执行一些操作。使用该方法可以将无论成功或失败都要执行的操作封装在该方法中,避免代码冗余。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649294fc48841e989405cf3c