2016-11-21 25 views
0

這裏是問題在已經處理資源之後訂閱可觀察的修改使用.share()

我有一個網絡請求,它下載一些信息。然而,這個請求在一段時間內只被調用一次是非常重要的(稍後你會得到這個想法),所有訂戶都會得到相同的結果。我的第一個想法是使用share()運算符,因此它將在保持單個請求源的同時多播結果。但我不確定會發生什麼事情,如果我在共享操作員已經因爲refCount下降到0而已經處理資源之後嘗試再次訂閱它會發生什麼事情。

我在此嘗試完成的事情是,我做,取決於存儲的信息的當前狀態,並且這些請求更新這些信息。一旦我發出第一個請求,我需要保留一個引用,並通知每個訂閱者,直到請求完成。請求完成後,所有訂戶都會收到通知並取消訂閱...但是,如果處理後有新的訂閱,我需要它重複請求,因此會重新訂閱使用share

這是類似於簡單的share運營商的可能性,還是我需要創建主題並手動控制排放?

回答

1

有一個很好的圖書館RxReplayingShare,我認爲這是正確的,你試圖達到什麼目的。

當至少有一個訂閱時,它將相同的結果傳遞給所有Subscriber。當沒有訂戶時,Observable完成。當再次訂閱時,原始Observable被調用。

RxMarble顯示它比描述更好。