Promise 中的 then()、catch() 和 finally() 一一解析

阅读时长 5 分钟读完

前言

随着前端技术和语言的发展,对于异步操作的需求也逐渐增多,而 Promise 就是解决异步操作的一种解决方案。在 Promise 中,then()、catch() 和 finally() 是常用的方法,本文将详细解析这三个方法的用法和意义。

then()

Promise 的主要功能就是封装异步操作,并在异步操作结束后执行回调函数。then() 方法就是用来指定异步操作成功时所执行的回调函数。

语法:promise.then(onFulfilled, onRejected)

  • onFulfilled: 成功时执行的函数,其参数为异步操作返回的结果
  • onRejected: 失败时执行的函数,其参数为异常信息

示例代码:

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

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

在实际应用中,then() 方法也可以链式调用,这时每个回调函数都将依次执行。

示例代码:

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

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

catch()

在 Promise 中,如果异步操作执行失败,应该使用catch()方法来指定错误处理的回调函数。 catch() 方法接收一个参数,即表示出错原因的对象,可以是字符串、数字或 Error 对象。

语法:promise.catch(onRejected)

示例代码:

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

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

需要注意的是,如果 catch() 方法中没有进行异常处理,那么异常会被继续传递到下一个 catch() 方法中。

示例代码:

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

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

finally()

finally() 方法在 Promise 的异步执行结束后无论成功失败都会执行,因此可以用于在执行异步操作时关闭弹窗等回收资源的操作。

语法:promise.finally(onFinally)

  • onFinally: 无论成功或失败都要执行的函数

示例代码:

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

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

总结

在 Promise 中,then()、catch() 和 finally() 是很重要的方法,它们可以让我们更加优雅的封装异步操作。同时,在实际的应用中,我们也可以通过链式调用来串联多个操作,从而简化代码的书写。

以上便是 Promise 中 then()、catch() 和 finally() 方法的详细解析,希望能对大家有所帮助。

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

纠错
反馈