2016-08-13 11 views
0

プロジェクトでは、多くのモジュールがあります。各モジュールは、他のモジュール/モジュールから発せられたデータを受信したいことがあります。Rx Observableの前に購読してください

解決しようとする問題は、観測可能なAを購読すると、この観測可能なものがまだ作成されていない可能性があります。この問題を解決するには、次の2つのアプローチについて検討します。

  1. 観測可能なレジストリシングルトンがあります。監視可能な状態になるたびに、レジストリにペアを設定し、レジストリが変更されたことをすべてのモジュールに通知します。各モジュールはこの通知を聞き、それが興味のある変更であるかどうかを判断します。観察可能な状態になったことが通知された場合は、サブスクライブします。監視対象が削除された場合は、レジストリを更新し、対応するペアを削除して、モジュールに通知し、モジュールは、レジストリを登録解除します。
  2. Rx実装event busSubjectを利用してください:シングルトンSubjectを作成し、イベントまたはデータまたはアイテムを放出する必要があるときはいつでも、このサブジェクトから放出してください。あなたのサブスクライバでは、サブジェクトのフィルタを使用して、特定のイベントのみを購読します。

最初のアプローチは非常に単純に見えますが、なぜそれが良くないのかわかりません。しかし、それは私にスケーラブルに見えません。 2番目の方法は、otto/eventbusをRxに置き換えるための推奨される方法です。

これらのアプローチに関する考えはありますか?

答えて

0

私にとって、最初のアプローチはそれほど簡単ではありません。サブスクライバは、トピックに登録して、そのトピックに関するものがあるときはいつでもイベントを受信することができ、気にしない新しいイベントソースがあるかどうかはわかりません。

私はRxHub libraryであるバージョン2の拡張版を使用します。トピック/タグごとに異なる動作が可能なので、非常に柔軟性があります。

関連する問題