【问题标题】:RxJS Keep Subject/Observable Subscription Active After ErrorRxJS 在出错后保持主题/可观察订阅处于活动状态
【发布时间】:2017-06-05 18:20:05
【问题描述】:

在调用 observable/subject 的错误函数后,有没有办法阻止订阅流(observable 或 subject)完成?

var subject = new Rx.Subject();
subject.subscribe(function(){alert("OnNext")}, function(){alert("OnError")});

var next = document.querySelector("#next").addEventListener('click', function(){
  subject.next();
})
var error = document.querySelector("#error").addEventListener('click', function(){
  subject.error();
});

据我了解,调用 subject.error() 会完成事件流。所以保持 observable 打开会破坏 Observable 对象的契约。那么如何处理 observable 的生命周期,以便在发生错误后重新创建订阅呢?这是一个 plnkr 演示该行为。

【问题讨论】:

    标签: rxjs rxjs5


    【解决方案1】:

    简单地说,你不能。至少没有主题。

    主题有内部状态,当他们发出或接收error 通知时,他们mark themself as stopped 永远不会发出任何东西。

    否则,您可以使用 catch()retry() 运算符重新订阅其源 Observable,但这在使用 Subjects 时对您没有帮助。

    【讨论】:

      猜你喜欢
      • 2018-06-23
      • 2019-05-11
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      相关资源
      最近更新 更多