W skrócie: Jak kontynuować odsłuchiwanie po wystąpieniu błędu w strumieniu bez umieszczania .catch
przed każdym .subscribe
?Dlaczego Rxjs rezygnuje z subskrypcji po błędzie?
Jeśli potrzebujesz więcej szczegółów są tutaj:
Załóżmy mam przedmiotem bieżącego użytkownika lub null. Dostaję dane z API czasami i wysyłam do Tematu. To odpowiednio aktualizuje widok. Ale w pewnym momencie błąd wystąpił na moim serwerze i chcę, aby moja aplikacja kontynuowała pracę jak poprzednio, ale zawiadamia niektóre miejsca o błędzie i KEEP słucha mojego Tematu.
Początkowo myślałem, że jeśli po prostu wykonam userSubject.error(...)
, wywoła ona tylko wywołania zwrotne .catch
i error
dla subskrybentów i pominie wszystkie procedury obsługi i łańcuchy sukcesów. A jeśli po tym, jak zadzwonię pod numer userSubject.next(...)
, wszystkie moje sieci i subskrybenci będą działać tak jak poprzednio
ALE niestety tak nie jest. Po pierwszym nieprzechwyceniu .error
anuluje subskrypcję ze strumienia i nie działa już.
Moje pytanie: dlaczego? Co należy zrobić, jeśli chcę obsłużyć normalnie wartość null
, ale w niektórych miejscach obsługuję również błędy?
Oto link do kodu źródłowego RxJs gdzie unsubscribes Abonencka błędu https://github.com/ReactiveX/rxjs/blob/master/src/Subscriber.ts#L140
rozumiane dzięki! – mgrinko