RxJS catchError
捕获 error 通道,并切换到新的恢复 Observable。
catchError(() => of('fallback'))时间线如何变化
- 1正常值 1
catchError 不影响 next 通知。
- 2正常值 2
数据继续透传。
- 33 触发错误
原 source 在 error 后终止,4 不会再到达。
- 4切换到 fallback$
catchError 返回新的 Observable 恢复流程。
- 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)