Promise 的 ES7 方法:finally 的使用
当我们在处理一些异步操作的时候,经常会遇到需要在异步操作完成后执行一些操作的情况。Promise 是一种用于管理异步操作的对象类型,可以方便地处理诸如异步请求、定时器等需要等待结果的任务。
ES6 引入了 Promise 对象,但是它存在一些问题,比如无法清晰地表达一个操作完成后需要执行一些清理工作的场景。ES7 提供了一个新的方法:finally,可以解决这个问题。
finally 的用法
finally 方法接受一个回调函数作为参数,该回调函数始终会在 Promise 结束时被执行,无论 Promise 的状态是成功还是失败。
-- -------------------- ---- ------- ------- ------------ -- - -- ------ -- ------------ -- - -- ------ -- ----------- -- - -- ------ ---
上面的代码中,finally 方法的回调函数不带任何参数,因为 Promise 的状态只与成功或失败有关,而不是其结果。
使用 finally 的场景
finally 方法可以用于需要在 Promise 结束时执行一些清理工作的场合。比如,一个异步请求得到了成功的响应后,需要关闭一个打开的文件,或者结束一个进程。
-- -------------------- ---- ------- ----- -- - -------------- ----- ---- - ---------------- ----- ---------- - ------------------------------ ----- --------- - ------- -- - ----- ------- - ---------- ------ ------------------- ---------------- -- ----- --------- - -- -- - -- ------ -- ----------- ------------ -- - ------ ------------------ -- ------------ -- - --------------------- -- ----------- -- - -------------------- ---
在以上示例中,如果请求成功,我们需要将结果写入日志文件中,如果失败,则只需要输出错误信息。在任何情况下,我们都需要在 Promise 结束时执行清理工作,这就是 finally 方法适用的场景。
结论
finally 方法是 ES7 提供的 Promise 扩展方法,它允许我们在 Promise 结束时执行清理工作。无论 Promise 的状态是成功还是失败,finally 方法始终都会被执行。在需要在 Promise 结束时执行清理工作的场景下,finally 方法非常有用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/677649e46d66e0f9aa1d5ebb