rxjs, игнорируя одну трубу - PullRequest
       9

rxjs, игнорируя одну трубу

0 голосов
/ 30 ноября 2018

Я пытаюсь создать общий канал, который будет перехватывать ошибки и влиять на другие каналы.

Наш производитель:

const producer = () => of(1, 2).pipe(
            map((primitiveValue: number) => {
                if (primitiveValue === 2) {
                    return throwError(primitiveValue)
                }
                return {value: primitiveValue};
            }),
        );

Этот канал будет присоединен к любому производителю и будет прослушиватьза ошибки:

const genericDecorator = (observable) =>
            observable
                .pipe(
                    catchError((primitiveValue) => {
                        return of('some error ' + primitiveValue)
                    })
                );

Подписка:

genericDecorator(producer())
                .pipe(
                    map((wrapped) => {
                        return wrapped.value;
                    })
                )
                .subscribe((value) => {
                    result.push(value)
                });

Я пытаюсь достичь

result = [1, 'some error 2']

И то, что я получил, это

result = [1, undefined]

Это кажется логичным, но есть ли способ пропустить один канал?

1 Ответ

0 голосов
/ 30 ноября 2018

Похоже, вы могли бы просто заменить значение, возвращаемое на catchError:

catchError((primitiveValue) => {
  return of({ value: 'some error ' + primitiveValue })
})
...