RxJS中Subject订阅者在first()操作符后持续接收错误的问题咨询
RxJS中Subject订阅者持续接收已抛出错误的问题咨询
各位RxJS大佬好,最近碰到个特别奇怪的RxJS行为,卡了好久都没头绪,想请教下大家的思路。
我的需求很明确:基于一个Subject创建一个Observable,这个Observable的逻辑是——如果接收到的值是null,就抛出错误;否则就正常发射这个值。之后我会给Subject发送一个null值。原本以为一切都会按预期运行,结果怪事发生了:这个Observable的订阅者一直在重复接收之前抛出的那个错误,完全不符合我的预期。
我大概的代码结构是这样的:
const sourceSubject = new Subject(); const target$ = sourceSubject.pipe( tap(value => { if (value === null) { throw new Error('Null value received'); } }) ); target$.subscribe({ next: val => console.log('Got value:', val), error: err => console.error('Caught error:', err) }); sourceSubject.next(null); // 这里之后,订阅者会不断输出错误,而不是只触发一次?
有没有大佬能帮我分析下这到底是哪里出了问题,应该怎么解决才能让订阅者只接收一次错误就结束呢?
备注:内容来源于stack exchange,提问作者someApp
相关产品推荐
相关产品推荐

