首页 文章

在Observable创建之前订阅Rx

提问于
浏览
0

在该项目中,有许多模块 . 每个模块可能想要接收从其他模块/模块发出的数据 .

试图解决的问题是,当我们订阅一个可观察的A时,这个可观察的可能还没有被创建 . 为了解决这个问题,讨论了两种方法:

  • 有一个Observable Registry单例 . 每当一个observable准备就绪时,将一对放入注册表,并通知所有模块注册表已更改 . 每个模块都会收听此通知,并确定它是否是您感兴趣的更改 . 如果通知可观察对象已准备好,请订阅它 . 如果删除了observable,请更新注册表,删除相应的对,并通知模块,模块取消订阅 .

  • Rx实施了event bus . 使用Subject:创建单个主题,然后每当需要发出事件或数据或项目时,从该主题发出它 . 在您的订阅者中,您只能使用主题过滤器订阅特定事件 .

第一种方法看起来很简单,我不知道为什么它不好 . 但它对我来说看起来并不具备可扩展性 . 第二种方法是用Rx替换otto / eventbus的推荐方法 .

有关这些方法的任何想法?

1 回答

  • 0

    对我来说,第一种方法并不是那么简单,也不是很难处理 . 订阅者可以订阅主题并在该主题存在时开始接收事件,并且他们不知道是否存在新事件源,因为他们不关心 .

    我使用版本2的扩展变体,即RxHub library . 它非常灵活,因为每个主题/标签允许不同的行为 .

相关问题