У меня есть ситуация, в которой мой Subject
возвращает ошибку, но выполняется метод ошибки Observable
, подписавшегося на этот Subject
, даже если подписка на этот Observable
не завершается с ошибкой ивернуть ошибку.Например:
this.createPayment$ = this.wizard$.pipe(
switchMap((wizard) => willReturnAnErrorObservable()),
share()
);
this. handleSuccessSubscription = this.createPayment$.pipe(
filter((someEvent: SomeEvent) => event.succeeded),
switchMap((someEvent: SomeEvent) =>
// this is never called because the filter above does not pass
doesNotFailObservable()
)
).subscribe((confirmedPayment: PaymentDeviceEvent) => {
// not important
},
(error) => {
// this error block is still being called, even though the this.
// handleSuccessSubscription switchMap is not executed, because the
// this.handleSuccessSubscription$ above returns an error
});
В этом коде выполняется метод ошибки createPaymentSuccessfulSubscription
, даже если switchMap
возвращает ok, потому что 'external' Subject
выбрасываетошибка.
Есть ли способ запретить подписчикам также получать ошибки?Это не критично, потому что я могу отфильтровать возвращенный error
, чтобы определить, нужно ли его обрабатывать здесь;но это немного вонючий, и я бы хотел, чтобы этот блок ошибок вообще не выполнялся.