在 ES9 中,Promise 新增了一个非常有用的方法:Promise.prototype.finally。它可以在 Promise 执行完毕后,无论成功还是失败,都能够执行一些操作。
Promise.prototype.finally 基本语法
Promise.prototype.finally 方法非常简单,其基本语法如下:
promise.finally(onFinally);
其中,promise
指定一个 Promise 对象,onFinally
指定一个回调函数,在 Promise 执行完毕后执行。
Promise.prototype.finally 的作用
Promise.prototype.finally 方法的作用在于,我们不必区分 Promise 是否 fulfilled 或 rejected,而统一处理它们执行完毕后的情况。比如,无论 Promise 是否成功,我们都希望在完成后执行一些清理操作。这时,可以使用 Promise.prototype.finally 方法。
Promise.prototype.finally 示例
下面我们来看几个简单的 Promise.prototype.finally 示例代码。
示例一
-- -------------------- ---- ------- --- ------- - --- ----------------- ------- -- - -------------- --- ------- ------------ -- - ------------------ -- -------------- -- - ------------------- -- ----------- -- - ----------------------- ---
在上面的示例中,我们创建了一个新的 Promise 对象,并立即解决该 Promise。然后,我们使用 then() 方法来处理 fulfilled 状态的 Promise,并使用 catch() 方法处理 rejected 状态的 Promise。最后,我们使用 finally() 方法来为 Promise 添加一个清理方法,无论 Promise 成功还是失败,都会在执行完毕后被调用。
示例二
-- -------------------- ---- ------- --- ------- - --- ----------------- ------- -- - --------------- --- ------- ------------ -- - ------------------ -- -------------- -- - ------------------- -- ----------- -- - ----------------------- ---
在上面的示例中,我们创建了一个新的 Promise 对象,并立即拒绝该 Promise。然后,我们使用 then() 方法来处理 fulfilled 状态的 Promise,并使用 catch() 方法处理 rejected 状态的 Promise。最后,我们使用 finally() 方法来为 Promise 添加一个清理方法,无论 Promise 成功还是失败,都会在执行完毕后被调用。
Promise.prototype.finally 方法的优点
使用 Promise.prototype.finally 方法的优点在于,它与 Promise.prototype.then() 方法唯一的区别在于,它不管 Promise 状态如何都会执行。这种一定性使得我们可以无需在不同情况下编写不同的代码逻辑。因此,在实际开发中,我们应该更加灵活地使用 Promise.prototype.finally 方法,使代码更加简洁、清晰、易于维护。
总结
在本篇文章中,我们介绍了 ES9 中出现的 Promise.prototype.finally 方法以及其作用。我们通过示例代码演示了如何使用该方法实现清理操作。最后,我们强调了使用 Promise.prototype.finally 方法的优点,以及在实际开发中应如何合理地使用该方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a5015848841e9894170e9e