在 ES8 中,Promise 对象新增了一个 finally 方法,该方法在 Promise 对象无论成功或失败后都会执行,与 then 方法不同的是,finally 方法不会改变 Promise 对象的状态,即它返回的是一个新的 Promise 对象,而不是原来的那个对象。
语法
Promise.prototype.finally(callback)
参数:
- callback:必选,当 Promise 对象无论成功或失败后都会执行的回调函数。
返回值:
- 一个新的 Promise 对象。
使用
finally 方法可以在 Promise 对象无论成功或失败后都会执行一些必要的操作,比如释放资源,关闭连接等等。同时它也可以避免一些代码重复,比如在 then 方法中同时执行成功和失败后的操作。
下面是一个使用 finally 方法的示例代码:
-------- ----------- - ------ ------------------ -------------- -- ---------------- ------------ -- - --------------------- -- ----------- -- - ---------------------- ------------- --- -
在上面的代码中,我们使用了 fetch API 来获取数据,然后使用 then 方法和 catch 方法来处理成功和失败的情况,最后使用 finally 方法来输出一条日志。
注意事项
- finally 方法返回一个新的 Promise 对象,因此它可以在 then 方法后使用,也可以在 catch 方法后使用。
- finally 方法不会改变 Promise 对象的状态,因此它不会影响后续的 then 方法或 catch 方法的执行。
- finally 方法的回调函数不接受任何参数,因为它不关心 Promise 对象的状态。
总结
ES8 中新增的 Promise.prototype.finally 方法可以在 Promise 对象无论成功或失败后都会执行一些必要的操作,避免一些代码重复,同时它也可以在 then 方法后使用,或者在 catch 方法后使用。
在实际开发中,我们可以利用 finally 方法来释放资源,关闭连接等等,从而提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/65e6dcc51886fbafa41f7637