我有几个可观察的对象,并且想要将它们组合为一个,但是想忽略那些会发出错误的对象,我希望操作员能够为成功的可观察对象发送值,即使其中一些对象会发出错误。
我一直在寻找concat,forkJoin之类的运算符,但是当发生错误时,它们会立即将其发出
import { concat, interval } from 'rxjs';
import { take } from 'rxjs/operators';
const timer1 = interval(1000).pipe(take(10));
const timer2 = interval(2000).pipe(take(6));
const timer3 = interval(500).pipe(take(10));
const result = concat(timer1, timer2, timer3);
result.subscribe(x => console.log(x));
// results in the following:
// (Prints to console sequentially)
// -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9
// -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5
// -500ms-> 0 -500ms-> 1 -500ms-> ... 9
答案 0 :(得分:0)
错误通知始终传播到顶部。您必须使用catchError
处理那些内部Observable的错误,并返回没有错误的Observable。例如
const inner1 = interval(1000).pipe(take(10), catchError(error => EMPTY));
const inner2 = interval(2000).pipe(take(5), catchError(error => of(null)));
const outer = merge(inner1, inner2)