как объединить наблюдаемые в один игнорируя ошибки в rxjs - PullRequest
0 голосов
/ 29 января 2020

У меня есть несколько наблюдаемых, и я хочу объединить их в одну, но хочу игнорировать те, которые выдают ошибки, я хочу, чтобы оператор генерировал значения для успешных наблюдаемых, даже если некоторые из них выдают ошибку.

Я был ищет операторы, такие как 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

1 Ответ

0 голосов
/ 29 января 2020

Уведомления об ошибках всегда распространяются наверх. Вы должны обрабатывать ошибки этих внутренних Observables с помощью 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)
...