前言
Promise 是 JavaScript 中处理异步操作的一种机制,它可以避免回调地狱,使代码更加清晰和易于维护。ES6 中引入了 Promise,但是它并不完美,其中一个问题就是缺乏一个 finally 方法,ES9 中终于将其标准化,本文将介绍 Promise.prototype.finally() 的使用方法和意义。
Promise.prototype.finally() 的定义
Promise.prototype.finally() 是 Promise 原型上的一个方法,它接收一个函数作为参数,该函数将在 Promise 被 resolved 或 rejected 后执行,无论 Promise 的状态如何,都会执行该函数。该方法返回一个新的 Promise 对象,该对象的状态和原始 Promise 对象的状态相同。
Promise.prototype.finally() 的使用
Promise.prototype.finally() 的使用非常简单,只需要在 Promise 对象上调用该方法,并传入一个函数即可。下面是一个示例:
-- -------------------- ---- ------- -------- ----------------- - ------ --- ----------------- ------- -- - ------------- -- - -------------------- -- ------ --- - ----------------- ------------ -- - -------------------- -- ------------ -- - --------------------- -- ----------- -- - -------------------- ------------ ---展开代码
在上面的示例中,myAsyncFunction() 返回一个 Promise 对象,我们在该对象上调用 then() 方法来处理 Promise 被 resolved 的情况,catch() 方法来处理 Promise 被 rejected 的情况,并在最后调用 finally() 方法来执行一些收尾工作。在该例中,不论 Promise 的状态如何,都会输出 'Promise finished.'。
Promise.prototype.finally() 的意义
Promise.prototype.finally() 的意义在于它可以在 Promise 被 resolved 或 rejected 后执行一些收尾工作,例如关闭资源、清理状态等。在以前的版本中,我们可能需要在 then() 或 catch() 方法中分别处理这些工作,但是这样会导致代码重复和不易维护。有了 finally() 方法,我们可以将这些工作统一放在一个地方,使代码更加整洁和易于维护。
总结
Promise.prototype.finally() 是 ES9 中新增的一个标准化方法,它可以在 Promise 被 resolved 或 rejected 后执行一些收尾工作,避免了代码重复和不易维护的问题。使用该方法可以使代码更加整洁和易于维护。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66256d03f76562e4b393354a