RxJS错误后保持主题/ Observable订阅活动
问题描述:
有没有办法阻止在调用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。
答
简单地说,你不能。至少不与主题。
受试者有内部状态,当他们发出或接收到error
通知他们mark themself as stopped并永远不会发出任何东西。
否则,您可以使用catch()
或retry()
运算符重新订阅它们的源Observable,但这在使用Subjects时无助于您。