在 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 对象的结果,但它们之间还是有很大的区别的。
- then 方法可以接收两个参数,分别处理 Promise 对象成功和失败的情况,而 catch 方法只能处理 Promise 对象失败的情况。
- then 方法返回的是一个新的 Promise 对象,可以继续使用 then 方法,而 catch 方法返回的还是原来的 Promise 对象,不能再次使用 then 方法。
- 如果 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