2017-06-05 45 views
1

有没有办法阻止在调用observable/subject的错误函数后订阅流(可观察或主题)完成?RxJS错误后保持主题/ Observable订阅活动

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的生命周期,以便在错误发生后重新创建订阅?这是展示行为的plnkr

回答

1

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

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

否则,您可以使用catch()retry()运算符重新订阅它们的源Observable,但这在使用Subjects时无助于您。