2017-06-05 106 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時無助於您。