在 ECMAScript 2018 中,Promise.finally() 是一个新增的方法,用于在 Promise 完成时(即成功或失败),执行一些操作,不管 Promise 最终的状态是什么。本文将介绍 Promise.finally() 的实现及使用方法。
Promise.finally() 的实现
下面是 Promise.finally() 模拟实现的代码:
Promise.prototype.finally = function(onFinally) { return this.then( value => Promise.resolve(onFinally()).then(() => value), reason => Promise.resolve(onFinally()).then(() => { throw reason }) ); };
该方法的实现非常简单,它接收一个回调函数 onFinally,在 Promise 完成时(包括成功或失败)都会执行这个回调函数。在 then() 方法中,onFinally 被包装成了一个 Promise,onFinally 的返回值不影响 Promise 的状态。同时,无论 Promise 成功还是失败,onFinally 都会被调用。
Promise.finally() 的使用
下面是 Promise.finally() 的使用示例:
-- -------------------- ---- ------- ------------------ ----------- -- - ------------------- -- ------- - ------ ----- - -- -- ----------- -- ----------------------- ----------- -- - ------------------- -- ------- - ------ ----- - -- -- ---------- -- ------------------
在该示例中,Promise.resolve(1) 成功后,在 then() 方法中打印 1 并返回 1+1=2。在 finally() 方法中打印 'finally'。在第二个 then() 方法中,打印 2 并返回 2+1=3。如果发生错误将会进入 catch() 方法并打印错误信息。不管 Promise 接下来的状态是什么,finally() 方法中的代码都将被执行。
Promise.finally() 的学习和指导意义
Promise.finally() 的出现解决了 Promise 在无论成功或是失败都要做一些收尾工作的需求,使得代码更加简洁和清晰。
学习 Promise.finally() 将有助于开发者更好地运用 Promise,避免遗漏一些收尾操作导致代码出现异常,从而提高代码的质量和可维护性。
除此之外,还可以锻炼开发者的思维能力和解决问题的能力,促进职业发展和成长。
总结
本文介绍了 ECMAScript 2018 中新增的 Promise.finally() 方法的实现和使用方法,并探讨了它的学习和指导意义。通过学习 Promise.finally() 可以更好地运用 Promise,提高代码质量和可维护性,同时也有助于职业发展和成长。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65ba44a9add4f0e0ff2ce4e7