You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 16:03:18