当多个观察者订阅一个RXJS主题时,是否可以阻止一个观察者传播错误,并阻止其他观察者(稍后注册)看到事件
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');
在这里,当第二个观察者抛出异常时,第三个观察者看不到事件,而test2值也看不到,因为第一个错误有效地关闭了主题
1st sees: test
2nd sees: test
ERROR Error: 2nd throws error
try-catch中的每个subscribe块,是否有更好的RXJS框架方法来确保第三个观察者仍然看到值和对的第二个调用下一步()也被观察到了?
更新(根据cartant的回答):
这在rxjs6中处理得更好—请参阅使用相同代码更新的Stackblitz,但没有副作用:
https://stackblitz.com/edit/rxjs6-subject-err