简介
Promise.finally() 方法是 ES2018 中新增的一个方法,用于指定无论 Promise 对象状态如何都会执行的回调函数,即无论 Promise 对象是 resolve 还是 reject,都会执行 finally() 方法中的回调函数。本文将介绍 Promise.finally() 方法的使用案例及注意事项。
用法
Promise.finally() 方法接收一个回调函数作为参数,该回调函数不接收任何参数。该方法返回一个新的 Promise 对象,该 Promise 对象的状态和值与原来的 Promise 对象一致。
promise.finally(() => { // 回调函数 });
案例
1. 清除 loading 状态
在前端开发中,经常需要在异步请求中添加 loading 状态来提示用户正在加载数据。使用 Promise.finally() 方法可以方便地清除 loading 状态,无论请求成功还是失败。
-- -------------------- ---- ------- -------------- ----------- ---------- -- - -- ---- -- ------------ -- - -- ---- -- ----------- -- - -------------- ---
2. 关闭数据库连接
在 Node.js 开发中,经常需要使用数据库连接。使用 Promise.finally() 方法可以方便地关闭数据库连接,无论查询成功还是失败。
-- -------------------- ---- ------- ----- -- - --------------- ----------- ---------- -- - -- ---- -- ------------ -- - -- ---- -- ----------- -- - ----------- ---
注意事项
1. 不支持 IE 浏览器
Promise.finally() 方法是 ES2018 中新增的方法,不支持 IE 浏览器。如果需要在 IE 浏览器中使用该方法,需要使用 Promise.finally() 的 polyfill。
2. finally() 方法不接收参数
Promise.finally() 方法不接收任何参数,即使在调用该方法时传入了参数,也会被忽略。
promise.finally(() => { // 回调函数 }, '参数被忽略');
3. finally() 方法不改变 Promise 对象状态
Promise.finally() 方法返回一个新的 Promise 对象,该 Promise 对象的状态和值与原来的 Promise 对象一致。即使在 finally() 方法中抛出异常,也不会改变原来 Promise 对象的状态。
-- -------------------- ---- ------- ------- ---------- -- - -- ---- -- ----------- -- - ----- --- -------------- -- ------------ -- - ------------------- -- ---- ---
结论
Promise.finally() 方法是一个非常有用的方法,可以方便地处理无论 Promise 对象状态如何都需要执行的操作。在使用该方法时,需要注意该方法不支持 IE 浏览器,不接收参数,不改变 Promise 对象状态。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/676bd4654f6c48c9382ea451