有没有办法在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。
答案 0 :(得分:1)
简单地说,你做不到。至少不是主题。
受试者具有内部状态,当他们发出或接收error
通知他们mark themself as stopped并且永远不会发出任何内容。
否则,您可以使用重新订阅其源Observable的catch()
或retry()
运算符,但这在使用主题时无效。