RxJS在出错后保持主题/可观察订阅活动

时间:2017-06-05 18:20:06

标签: rxjs rxjs5

有没有办法在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

1 个答案:

答案 0 :(得分:1)

简单地说,你做不到。至少不是主题。

受试者具有内部状态,当他们发出或接收error通知他们mark themself as stopped并且永远不会发出任何内容。

否则,您可以使用重新订阅其源Observable的catch()retry()运算符,但这在使用主题时无效。