什么是 Promise
Promise 是一种 JavaScript 对象,用于异步编程。它可以让我们在异步操作完成后执行回调函数,而不需要嵌套回调函数,从而避免回调地狱。
Promise 有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。当 Promise 对象处于 pending 状态时,可以通过 resolve 和 reject 方法将其转换为 fulfilled 或 rejected 状态。
Promise.prototype.finally()
Promise.prototype.finally() 是 ES8(ECMAScript 2017)中新增的 API,用于在 Promise 状态变为 fulfilled 或 rejected 时,执行一个回调函数,无论 Promise 的状态如何,都会执行该回调函数。
finally() 方法返回一个新的 Promise 对象,该对象的状态和原 Promise 对象的状态相同。
finally() 方法的语法
finally() 方法的语法如下:
promise.finally(onFinally)
其中,promise 是一个 Promise 对象,onFinally 是一个回调函数,表示 Promise 状态变为 fulfilled 或 rejected 时,要执行的操作。
finally() 方法的用法
finally() 方法的用法如下:
// javascriptcn.com 代码示例 Promise.resolve(1) .then(value => { console.log(value); // 输出 1 return value + 1; }) .finally(() => { console.log('finally'); }) .then(value => { console.log(value); // 输出 2 });
在上面的代码中,我们首先创建一个 Promise 对象,然后使用 then() 方法链式调用两个回调函数。第一个回调函数输出 Promise 对象的值,第二个回调函数使用 finally() 方法,在 Promise 对象状态变为 fulfilled 或 rejected 时,输出 finally。最后,我们再次使用 then() 方法输出 Promise 对象的值加 1。
finally() 方法的指导意义
finally() 方法的指导意义在于,无论 Promise 对象的状态如何,我们都可以在其状态变化时执行一些操作,比如释放资源、清理代码等等。
在实际开发中,我们常常需要进行一些清理工作,比如关闭数据库连接、释放内存等等。使用 finally() 方法,我们可以在 Promise 对象状态变化时,统一进行这些清理工作,避免代码重复,提高代码的可读性和可维护性。
总结
Promise.prototype.finally() 是 ES8 中新增的 API,用于在 Promise 对象状态变为 fulfilled 或 rejected 时,执行一个回调函数。该方法返回一个新的 Promise 对象,该对象的状态和原 Promise 对象的状态相同。
finally() 方法的指导意义在于,无论 Promise 对象的状态如何,我们都可以在其状态变化时执行一些操作,比如释放资源、清理代码等等。在实际开发中,使用 finally() 方法可以提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65713c7ad2f5e1655d9ee155