Promise 是 JavaScript 异步编程中非常重要的一部分,它提供了一种处理异步操作结果的方式。在 ES9(2018)中,Promise 增加了一个新的方法:Promise.prototype.finally()。本文将详细介绍这个新方法的特性、学习和指导意义,并提供示例代码。
Promise.prototype.finally() 的特性
Promise.prototype.finally() 方法是在 Promise 对象状态变为 resolved 或 rejected 后,无论 Promise 对象最终状态如何,都会执行指定的回调函数。这个方法与 Promise.prototype.then() 很相似,但是它不管 Promise 对象的状态如何都会执行指定的回调函数,而 Promise.prototype.then() 只在 Promise 对象状态变为 resolved 才会执行指定的回调函数。
Promise.prototype.finally() 方法的语法如下:
promise.finally(onFinally)
其中,promise 是一个 Promise 对象,onFinally 是一个回调函数,它会在 Promise 对象状态变为 resolved 或 rejected 后执行。
Promise.prototype.finally() 的学习和指导意义
Promise.prototype.finally() 方法的出现,使得我们可以在 Promise 对象状态变为 resolved 或 rejected 后执行一些清理工作。比如,我们可以在 Promise 对象状态变为 resolved 或 rejected 后,关闭一些资源,清除一些临时数据等等。
另外,Promise.prototype.finally() 方法还可以和 Promise.prototype.catch() 方法一起使用。比如,我们可以在 Promise 对象状态变为 rejected 后,使用 Promise.prototype.catch() 方法捕获错误,然后使用 Promise.prototype.finally() 方法执行一些清理工作。
Promise.prototype.finally() 的示例代码
下面是一个使用 Promise.prototype.finally() 方法的示例代码:
-- -------------------- ---- ------- -------- --------------- - ------ --- ------------------------- ------- - --------------------- - ------------------- -- ------ --- - --------------- ---------------------- - -------------------- -- ---------------------- - ------------------- -- ------------------- - ----------------------- ---展开代码
在上面的示例代码中,asyncFunction() 函数返回一个 Promise 对象,它会在 1 秒后返回一个 resolved 状态的 Promise 对象。然后,我们使用 Promise.prototype.then() 方法和 Promise.prototype.catch() 方法分别处理 resolved 和 rejected 状态的 Promise 对象,最后使用 Promise.prototype.finally() 方法执行一些清理工作。
总结
Promise.prototype.finally() 方法是 ES9(2018)中新增的一个方法,它可以在 Promise 对象状态变为 resolved 或 rejected 后执行指定的回调函数。这个方法的出现使得我们可以在 Promise 对象状态变化后执行一些清理工作,具有很大的实用价值。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65e0801a1886fbafa4db21c4