0

我有几个 observables 并想将它们组合成一个但想忽略那些发出错误的,我希望操作员为成功的 observables 发出值,即使其中一些发出错误。

我一直在寻找像 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
4

1 回答 1

0

错误通知总是传播到顶部。你必须处理那些内部 Observable 上的错误,catchError并返回一个没有错误的 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)
于 2020-01-29T09:39:54.150 回答