Promise 的 then 方法以及错误处理
在 JavaScript 中,异步操作是经常见到的。传统的回调函数嵌套很容易造成回调地狱,降低代码可读性和维护性。Promise 就是解决这个问题的一种方法。Promise 是一种表示异步操作的对象,表示一个事件在未来会发生,通常用于处理异步操作的结果。
then 方法是 Promise 对象用来处理成功状态和失败状态的回调函数。当已有一个 Promise 实例时,可以通过 then 方法添加成功状态和失败状态的回调函数,或返回一个新的 Promise 实例。
- then 方法的基本用法
then 接收两个参数,第一个参数是成功状态的回调函数,第二个参数是失败状态的回调函数。当 Promise 实例的状态为成功时,会调用第一个参数中定义的回调函数;当状态为失败时,会调用第二个参数中定义的回调函数。
示例代码:
-- -------------------- ---- ------- ----- ------- - --- ------------------------- ------- - --------------------- - --------------- -- ------ --- -------------------------- - ----------------- -- -- ----- -- ------------- - ----------------- ---
- then 方法返回一个新的 Promise 实例
then 方法会返回一个新的 Promise 实例。当回调函数返回一个值时,新的 Promise 实例会以该值为成功状态;如果回调函数中抛出一个错误,则新的 Promise 实例会以该错误为失败状态。
示例代码:
-- -------------------- ---- ------- ----- -------- - --- ------------------------- ------- - --------------------- - ------------- -- ------ --- ----- -------- - --------------------------- - ----------------- -- -- --- ------ ---- -- ------------- - ----------------- --- --------------------------- - ----------------- -- -- --- -- ------------- - ----------------- ---
- 错误处理
当 Promise 实例中发生错误时,应该由失败状态的回调函数来处理错误。如果在失败状态中没有捕获异常,那么异常会被抛出,导致程序崩溃。因此,在 Promise 实例中需要统一处理错误,避免程序因为异常而崩溃。
可以通过 then 方法的第二个参数来处理错误。如果 Promise 实例中发生错误时,则会调用第二个参数指定的回调函数。
示例代码:
-- -------------------- ---- ------- ----- -------- - --- ------------------------- ------- - --------------------- - ---------- ---------------- -- ------ --- --------------------------- - ----------------- -- ------------- - ------------------------- -- -- ------- ---
注意:如果 Promise 实例中发生错误,会直接跳到最近的一个失败状态的回调处理错误。如果需要多重错误处理,需要在回调函数中手动抛出错误。
总结
Promise 的 then 方法是用来处理异步操作的成功状态和失败状态。通过 then 方法可以返回一个新的 Promise 实例,实现链式调用。在处理 Promise 实例中的错误时,应该在回调函数中手动处理错误,避免异常导致程序崩溃。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d39171b5eee0b525b33cc6