В проекте есть много модулей. Каждый модуль может захотеть получать данные, испускаемые из других модулей/модулей.Rx Подписка до создания наблюдаемого
Проблема, которую мы пытаемся решить, заключается в том, что когда мы подписываемся на наблюдаемый А, этот наблюдаемый, возможно, еще не был создан. Для решения этой проблемы обсуждаются два подхода:
- Имеют наблюдаемый реестр Singleton. Каждый раз, когда наблюдаемый готов, поместите пару в реестр и сообщите обо всех модулях, которые изменил реестр. Каждый модуль будет прослушивать это уведомление и решать, интересует ли оно изменение. Если будет сообщено, что наблюдаемый готов, подпишитесь на него. Если наблюдаемое удалено, обновите реестр, удалите соответствующую пару и уведомите модули, модуль отменит его подписку.
- Внедрение Rx event bus. Используйте Subject: создайте одноэлементный объект, затем всякий раз, когда событие или данные или элемент необходимо испускать, испускайте его из этого объекта. В вашем подписчике вы подписываетесь только на конкретное событие, используя фильтр по этому вопросу.
Первый подход выглядит очень прост, и я не могу сказать, почему это не хорошо. Но это просто не выглядит масштабируемым для меня. Второй подход - рекомендуемый способ замены otto/eventbus на Rx.
Любые мысли об этих подходах?