2016-08-13 110 views
0

在該項目中,有很多模塊。每個模塊可能希望接收其他模塊/模塊發出的數據。Rx在Observable創建之前訂閱

試圖解決的問題是,當我們訂閱一個可觀察的A時,這個可觀察的可能還沒有被創建。爲了解決這個問題,我們討論了兩種方法:

  1. 有一個可觀察的註冊表單例。每當觀察者準備好時,將一對成對的註冊表,並通知所有模塊,註冊表已更改。每個模塊都將聽取這個通知,並決定它是否是一個感興趣的更改。如果通知觀察者已準備就緒,請訂閱它。如果observable被刪除,更新註冊表,刪除相應的對,並通知模塊,模塊退訂它。
  2. Rx實施event bus。使用Subject:創建一個單獨的Subject,然後每當需要發送事件或數據或項目時,從該主題發出。在您的訂閱者中,您只能通過對主題進行過濾來訂閱特定事件。

第一種方法看起來非常簡單,我不知道它爲什麼不好。但它對我來說看起來並不可擴展。第二種方法是用Rx替換otto/eventbus的推薦方法。

對這些方法有什麼想法?

回答

0

對我來說,第一種方法並不是那麼簡單和太多處理。訂閱者可以訂閱一個主題,並在該主題有一個主題時開始接收事件,並且他們不知道是否有新的事件源,因爲他們不關心。

我使用版本2的擴展變體,即RxHub library。這是非常靈活的,因爲每個主題/標籤允許不同的行爲。