Promise 的 catch 方法有什么作用?

推荐答案

Promisecatch 方法用于处理 Promise 被拒绝(rejected)的情况。它相当于 .then(null, rejectionHandler) 的语法糖,专门用于捕获 Promise 链中的错误。

本题详细解读

1. catch 方法的作用

catch 方法用于捕获 Promise 链中的错误。当 Promise 被拒绝时,catch 方法中的回调函数会被调用,并且可以处理错误。

2. catch 方法的语法

catch 方法接收一个回调函数作为参数,该回调函数会接收一个错误对象作为参数。

  • onRejected:一个函数,当 Promise 被拒绝时调用,接收一个错误对象作为参数。

3. catch 方法的链式调用

catch 方法可以链式调用,用于处理 Promise 链中任意位置的错误。

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

4. catch 方法的返回值

catch 方法返回一个新的 Promise,这意味着你可以在 catch 之后继续链式调用其他 Promise 方法。

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

5. catch 方法的错误传播

如果在 catch 方法中没有处理错误,或者 catch 方法本身抛出错误,错误会继续向下传播,直到被下一个 catch 捕获。

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

6. catchthen 的对比

catch 方法是 then 方法的特例,专门用于处理错误。以下两种写法是等价的:

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

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

7. 使用场景

catch 方法通常用于以下场景:

  • 捕获 Promise 链中的错误。
  • 在错误发生时提供备用值或执行备用逻辑。
  • 在错误发生时记录日志或上报错误信息。
-- -------------------- ---- -------
-----------
  ---------- -- -
    -- ----
  --
  ------------ -- -
    -------------------- -------- ------- -------
    ------ ------------------
  --
  ---------- -- -
    -- ------
  ---
纠错
反馈