前言
在 JavaScript 开发中,异步编程已经成为了一种标配。而 Promise 是一种非常重要的异步编程手段,它能够让我们更方便、更优雅地处理异步操作,而且在 ES6 中也被正式纳入了标准。
在 ES9 中,Promise 这个内建对象又增加了一个新的方法:Promise.prototype.finally()
。那么该方法是如何使用的?有哪些特性?本文将会一一为大家介绍。
Promise 基础概念
在介绍 Promise.prototype.finally()
之前,我们需要先了解一下 Promise 的基础概念。
在 JavaScript 编程中,我们经常会遇到需要处理异步结果的情况,比如从远程服务器获取数据等。在回调函数中处理异步结果是一种常见的方法,但这种方法很容易出现“回调地狱”,可读性和可维护性非常差。最近 JavaScript 制定了一个标准化的解决方案:Promise。
Promise 是一种封装异步操作的对象。它可以将回调函数转化为链式调用,使得代码可读性更高、可维护性更强。
Promise 有三种状态:pending(等待)、fulfilled(已成功)和rejected(已失败)。在创建 Promise 对象后,它会一直处于“等待”状态,直到异步操作完成。如果异步操作成功,Promise 对象的状态会变为“已成功”,并且会执行 .then()
方法绑定的回调函数。如果异步操作失败,Promise 对象的状态会变为“已失败”,并且会执行 .catch()
方法绑定的回调函数。
Promise.prototype.finally()
方法说明
在 ES9 中,Promise 这个内建对象又增加了一个新的方法:Promise.prototype.finally()
。该方法可以让我们在 Promise 对象的“成功”或“失败”状态改变时都执行一段代码,不论该 Promise 对象是处于“成功”还是“失败”状态。
Promise.prototype.finally()
方法的语法如下:
--------------------------------- -- ----- ---
promiseObject
:一个 Promise 对象function
:将在 Promise 对象状态改变时执行的函数
Promise.prototype.finally()
方法不接收任何参数,而是返回新的 Promise 对象。如果在 finally()
方法内部抛出错误,该错误不会传播到链式调用的下一个 .then()
方法中,因为 finally()
返回的 Promise 对象的状态不改变。
需要注意的是,.finally()
方法返回的 Promise 对象只能拿到上一个 Promise 对象的成功或失败响应结果值并不会对结果进行处理。
Promise.prototype.finally()
方法示例
接下来我们通过一个简单的示例来演示 Promise.prototype.finally()
方法的用法。
----- ----------- - ------ -------------- -- - ------ --- ----------------- ------- -- - ------------- -- - -- --------------- - ------------- -- ------- --------- - ---- - ------------ -- ------- --------- - -- ------ --- -- ----------------- ----- -------------- -- - -------------------- -- -------------- -- - ------------------- -- ----------- -- - -------------------- --- ---- ------------ ---
运行效果如下图所示:
---- -- ------- ------ ------- --- ---- ---------
上述示例中,我们将 Promise.prototype.finally()
添加到 Promise 对象的链式调用末尾,可以清晰地得到 Promise 对象的状态,不论它是处于“成功”或“失败”状态。
总结
Promise.prototype.finally()
方法是 ES9 中 Promise 增加的新方法,它允许开发者在 Promise 对象状态改变时绑定一段即将执行的代码块,而不考虑 Promise 对象处于“成功”或“失败”状态;同时,该方法返回的 Promise 对象只能拿到上一个 Promise 对象的成功或失败响应结果值,而不会对结果进行处理。
这种特性使得开发者们的代码更加规范化、易维护,因为它们只需在一处添加代码,就可以对 Promise 对象中所有成功或失败响应结果值进行处理。在使用 Promise 编程时,这个新方法将非常有用,因为它消除了代码中冗余的回调函数,使代码更易于阅读和编写。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64eae3e6f6b2d6eab35a06bf