Promise 中的 then 和 catch 有什么区别

在 JavaScript 中,Promise 是一种处理异步操作的方式,而 then 和 catch 是 Promise 的两个重要方法。它们的使用非常广泛,但很多人并不清楚它们之间的区别。本文将详细介绍 then 和 catch 的区别,以及如何正确使用它们。

then 方法

then 方法是 Promise 对象的方法之一,它接收两个参数:onFulfilled 和 onRejected,分别表示 Promise 对象成功时和失败时的回调函数。如果 Promise 对象成功了,就会调用 onFulfilled 函数,如果失败了,就会调用 onRejected 函数。

以下是一个简单的示例:

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

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

在上面的示例中,Promise 对象成功了,因此会调用 then 方法的第一个参数,输出成功的字符串。

catch 方法

catch 方法也是 Promise 对象的方法之一,它只接收一个参数:onRejected。它的作用和 then 方法的第二个参数一样,用于处理 Promise 对象的失败情况。

以下是一个使用 catch 方法的示例:

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

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

在上面的示例中,Promise 对象失败了,因此会调用 catch 方法,输出错误信息。

区别

虽然 then 方法和 catch 方法都可以处理 Promise 对象的结果,但它们之间还是有很大的区别的。

  1. then 方法可以接收两个参数,分别处理 Promise 对象成功和失败的情况,而 catch 方法只能处理 Promise 对象失败的情况。
  2. then 方法返回的是一个新的 Promise 对象,可以继续使用 then 方法,而 catch 方法返回的还是原来的 Promise 对象,不能再次使用 then 方法。
  3. 如果 then 方法中抛出了异常,就会调用 catch 方法,因此可以使用 catch 方法来处理 then 方法中的异常。

以下是一个使用 then 和 catch 方法的示例:

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

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

在上面的示例中,Promise 对象成功了,因此会调用 then 方法的第一个参数,输出成功的字符串。然后在 then 方法中抛出了异常,因此会调用 catch 方法,输出错误信息。

总结

在使用 Promise 对象时,then 方法和 catch 方法都是非常重要的方法。它们可以帮助我们处理异步操作的结果,使代码更加简洁和可读。在使用时,需要注意它们之间的区别,选择合适的方法来处理 Promise 对象的结果。

建议在 then 方法中处理 Promise 对象的成功情况,在 catch 方法中处理 Promise 对象的失败情况。如果 then 方法中抛出了异常,可以使用 catch 方法来处理异常。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66035e56d10417a222fbcd87