Promise.finally() 方法的使用案例及注意事项

阅读时长 3 分钟读完

简介

Promise.finally() 方法是 ES2018 中新增的一个方法,用于指定无论 Promise 对象状态如何都会执行的回调函数,即无论 Promise 对象是 resolve 还是 reject,都会执行 finally() 方法中的回调函数。本文将介绍 Promise.finally() 方法的使用案例及注意事项。

用法

Promise.finally() 方法接收一个回调函数作为参数,该回调函数不接收任何参数。该方法返回一个新的 Promise 对象,该 Promise 对象的状态和值与原来的 Promise 对象一致。

案例

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() 方法不接收任何参数,即使在调用该方法时传入了参数,也会被忽略。

3. finally() 方法不改变 Promise 对象状态

Promise.finally() 方法返回一个新的 Promise 对象,该 Promise 对象的状态和值与原来的 Promise 对象一致。即使在 finally() 方法中抛出异常,也不会改变原来 Promise 对象的状态。

-- -------------------- ---- -------
-------
  ---------- -- -
    -- ----
  --
  ----------- -- -
    ----- --- --------------
  --
  ------------ -- -
    ------------------- -- ----
  ---

结论

Promise.finally() 方法是一个非常有用的方法,可以方便地处理无论 Promise 对象状态如何都需要执行的操作。在使用该方法时,需要注意该方法不支持 IE 浏览器,不接收参数,不改变 Promise 对象状态。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/676bd4654f6c48c9382ea451

纠错
反馈