在主题的旁边和分享结果上触发可观察

时间:2017-07-11 10:47:42

标签: android rx-java

我有一个按钮,当按下该按钮时,btnSubject的{​​{1}}会触发,并在我onNext中创建的Observable中进行API调用,如下所示:< / p>

ViewModel

然后我可以重复使用这个observable再创建两个,然后从我的视图中订阅,允许我将逻辑保留在val apiObservable = btnSubject.flatMap{ apiService.getSomething() .toResponseOrErrorObservable() .subscribeOn(Schedulers.io())} 中,如下所示:

ViewModel

所以apiObservable由被调用的val successObservable = apiObservable.filter{ it.isSuccess() } val failureObservable = apiObservable.filter{ it.isFailure() } 触发。

然后更新视图,因为它正在收听btnSubject.onNext()successObservable

这可能吗?也许failureObservable上有.share()

更新

我在第一次订阅时添加了共享运算符和所有可观察项目。即使过滤器也没有阻止它...我必须遗漏一些明显的东西

1 个答案:

答案 0 :(得分:1)

可能有几种方法可以做到。

正如您所写,使用share()运算符将输出乘以许多Subscribers。但是,您必须要小心,还必须致电connect()将冷Observable变为热门replay()。如果同时拨打connect(),您也不需要多次拨打{{1}}。 (Source

然而,有更简单的解决方案:使用杰克沃顿的图书馆RxReplayingShare。之前博客文章的作者在his next article

中建议了它