错误与共享

RxJS catchError

捕获 error 通道,并切换到新的恢复 Observable。

catchError(() => of('fallback'))

时间线如何变化

  1. 1
    正常值 1

    catchError 不影响 next 通知。

  2. 2
    正常值 2

    数据继续透传。

  3. 3
    3 触发错误

    原 source 在 error 后终止,4 不会再到达。

  4. 4
    切换到 fallback$

    catchError 返回新的 Observable 恢复流程。

  5. 5
    恢复流完成

    订阅以 complete 结束,而不是 error。

受支持的示例代码

实验室只根据下列示例中的关键操作符生成预设时间线,不执行任意输入代码。

import { of, map, catchError } from 'rxjs'

of(1, 2, 3, 4).pipe(
  map(value => {
    if (value === 3) throw new Error('boom')
    return value
  }),
  catchError(() => of('fallback'))
).subscribe(console.log)