Promise 中的 finally 的用法和作用
Promise 是一种处理异步操作的解决方案,它提供了更强大的处理方式,使得异步操作可以像同步操作一样愉快地编写代码。而其中的 finally 方法也是 Promise 中的一个重要方法,让我们来具体了解一下。
- finally 的用法
finally 是 Promise 中的一个方法,该方法无论 Promise 状态如何,都会执行并返回一个 Promise。finally 方法接受一个函数作为参数,该函数在 Promise 被 resolved 或 rejected 时均会被调用。
语法如下:
promise.finally(onFinally);
其中,onFinally 是一个可选函数,表示 Promise 的状态无论如何都会运行该函数。
- finally 的作用
finally 方法和 catch 方法类似,都是 Promise 的辅助方法。它们都是用来处理 Promise 回调函数内出现的错误或者异常时采取的策略。
catch 方法是专用于处理 Promise 链中的异常的,而 finally 方法则与 Promise 的状态无论如何都会执行的函数相对应。
finally 的作用主要有三个方面:
(1)在 Promise 执行完成后,无论它是 fulfilled 还是 rejected,finally 总是会被执行。
(2)finally 方法的回调函数参数同样可以返回 Promise,可以用来实现 Promise 数据流的控制和变形。
(3)finally 处理程序的返回值会被忽略,finally 的主要目的是进行资源清理和任务完成的消息发送。
- finally 的示例代码
下面是使用 finally 方法的一个例子,我们可以看到无论 Promise 状态如何,finally 都会被执行。
-- -------------------- ---- ------- ----- ----------- - --- ----------------- ------- -- - ------------- -- - ----- ------ - -------------- -- ------- -- ---- - ---------------- - ---- - ---------- -------------- ------------- - -- ------ --- ----------- ------------- -- - -------------------- --------- ---- ----------- -- -------------- -- - ----------------------------- -- ----------- -- - -------------------- ------------ ---展开代码
当 Promise 被 resolved 时,输出为:
Promise fulfilled with 0.8673222223569884 Promise completed
当 Promise 被 rejected 时,输出为:
Promise rejected! Promise completed
总的来说,finally 方法可以使我们在 Promise 链中完成后自由地执行一些清理代码,这对于一些资源的释放、状态的恢复等操作非常有用。同时,finally 方法的语法简单直接,也让我们更好地处理 Promise 中的异常情况。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67b8c1ca306f20b3a66bf102