Когда несколько наблюдателей подписываются на Субъект RXJS, возможно ли предотвратить ошибку одного наблюдателя, распространяющуюся и не позволяющую другим наблюдателям (зарегистрированным позже) увидеть событие
Stackblitz Пример: https://stackblitz.com/edit/rxjs-cy7swm
const sub = new Subject<string>();
sub.asObservable().subscribe((val) => {
console.log('1st sees: ' + val);
});
sub.asObservable().subscribe((val) => {
console.log('2nd sees: ' + val);
throw new Error('2nd throws error');
});
sub.asObservable().subscribe((val) => {
console.log('3rd sees: ' + val);
});
sub.next('test');
sub.next('test2');
Здесь 3-й наблюдатель не видит событие, поскольку 2-е создает исключение, а значение test2 ничем не видится, поскольку первая ошибка эффективно закрывает объект
1st sees: test
2nd sees: test
ERROR Error: 2nd throws error
Без явного переноса каждого блока подписки в перехвате попытки, существует ли лучший способ инфраструктуры RXJS, чтобы убедиться, что третий наблюдатель все еще видит значение, и также наблюдается второй вызов sub.next ()?
Обновление (согласно ответу участника):
Это лучше обрабатывается в rxjs6 - см. Обновленный Stackblitz с тем же кодом, но без побочных эффектов: https://stackblitz.com/edit/rxjs6-subject-err