前言
自从 Promise 对象被引入 JavaScript 后,异步编程变得更加容易。但是,Promise 系统自带的方法确实不太好用,比如 then() 方法返回的也是一个 Promise 对象和 catch() 方法无法区分错误类型等。因此,ES12 引入了新的 Promise.prototype.finally() 方法来解决这些问题。
Promise.prototype.finally() 方法是什么?
Promise.prototype.finally() 方法用于在 Promise 执行完毕后,无论结果如何,都会执行一些操作。比如,你想在请求成功或失败后,都需要执行某些操作,这时就可以使用 Promise.prototype.finally() 方法。
promiseObject.finally(onFinally);
这里的 onFinally 是一个函数,它会在 Promise 执行完毕后被调用。这个函数没有参数,也没有返回值。同时,onFinally 会继续传递之前的 Promise 的状态和值,因此,你仍然可以进行其他的处理。
Promise.prototype.finally() 方法的指导意义
对于经验不丰富的开发者来说,很容易忘记处理 Promise 执行完毕后的情况,这时使用 Promise.prototype.finally() 方法可以保证无论 Promise 执行成功还是失败都会执行一些必要的操作。
Promise.prototype.finally() 方法可以显式地处理错误类型。如果操作成功,Promise 对象会返回成功的值,如果发生错误,Promise 对象会返回失败的错误类型。
Promise.prototype.finally() 方法的示例代码
下面是一个简单的示例代码:
-- -------------------- ---- ------- -- ---------------------------- ----------------- -------------- -- - -------------------- -- ---- -- ------------ -- - ---------------------- ------ -- ---- -- ----------- -- - -------------------- ---
上面的代码中,Promise 执行完毕后,无论成功或是失败,都将通过 finally() 方法在控制台打印一条操作成功的信息。这样,我们就可以在 Promise 执行后做出一些操作,比如清除一些痕迹或是关闭一个窗口等等。
结论
ES12 引入的 Promise.prototype.finally() 方法可以在 Promise 执行完毕后执行一些必要的操作。它提供了一种简洁明了的方式来处理 Promise 系统自带的一些问题,从而提高 JavaScript 进行异步编程的效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674bc2add657e1f70dbcff32