在 ECMAScript 2018(ES9)中,Promise 对象新增了一个 finally() 方法,用于指定不管 Promise 对象最终状态如何都会执行的操作。该方法可以帮助我们更好地处理异步操作中的错误和异常情况。在本文中,我们将详细介绍 Promise.prototype.finally() 方法的使用注意事项,并提供示例代码以帮助读者更好地理解。
Promise.prototype.finally() 方法的语法
Promise.prototype.finally() 方法的语法如下:
--------------------------
其中,promise 是一个 Promise 对象,onFinally 是一个函数,用于指定 Promise 对象最终状态时要执行的操作。
Promise.prototype.finally() 方法的使用注意事项
1. Promise.prototype.finally() 方法的返回值
Promise.prototype.finally() 方法返回一个新的 Promise 对象,该 Promise 对象的状态和值与原来的 Promise 对象一致。如果 onFinally 函数返回一个 Promise 对象,那么新的 Promise 对象的状态和值将与该 Promise 对象一致。
2. Promise.prototype.finally() 方法的执行时机
Promise.prototype.finally() 方法的 onFinally 函数在 Promise 对象最终状态时执行,即 Promise 对象的状态变为 fulfilled 或 rejected 时都会执行。
3. Promise.prototype.finally() 方法的错误处理
如果 onFinally 函数抛出一个错误,那么新的 Promise 对象的状态将变为 rejected,并且该错误将作为新的 Promise 对象的 reason 值。
4. Promise.prototype.finally() 方法的参数传递
Promise.prototype.finally() 方法的 onFinally 函数不接受任何参数,因为它只是用于指定最终状态时要执行的操作。
示例代码
下面是一个使用 Promise.prototype.finally() 方法的示例代码,该代码用于从服务器获取数据并显示在页面上:
-------- ------------------- - ------ --------------------------------- -------------- -- - -- -------------- - ----- --- -------------- -------- --- --- ----- - ------ ---------------- -- ---------- -- - -- ------- ---- -- --- ---- ----------------------------------------- - --------------------- -- ------------ -- - -- ------- ----- ------- -- --- ---- ------------------------------------------ - -------------- -- ----------- -- - -- ---- ------- ------- ------------------------------------------------ - ------- --- -
在上述代码中,我们首先使用 fetch() 方法从服务器获取数据,并通过 Promise 链式调用处理响应结果。如果响应状态不是 200 OK,我们将抛出一个错误并在页面上显示错误消息。最后,我们使用 Promise.prototype.finally() 方法指定一个函数,用于在 Promise 对象最终状态时隐藏加载动画。
总结
在本文中,我们介绍了 ECMAScript 2018(ES9)中 Promise.prototype.finally() 方法的使用注意事项,并提供了示例代码以帮助读者更好地理解。使用 Promise.prototype.finally() 方法可以帮助我们更好地处理异步操作中的错误和异常情况,并提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66033b31d10417a222f6b366