Concat如果第一个是空的

时间:2018-03-22 13:08:56

标签: rx-java2

我需要在我的应用中填写活动列表。

我可以按类型A请求事件,然后如果结果不为空,我填写该列表。

如果结果为空,我需要按类型B检索,并用它填充列表。

我考虑过两个RxJava单曲,但只有当第一个是空的时才这样做。我在脑海中看到了逻辑,但我无法将其付诸实践。

任何帮助?

1 个答案:

答案 0 :(得分:1)

我假设您的意思是Single<List<T>>类型的来源,因为空Single是不可能的。在这种情况下,请使用flatMap

eventSourceA
.flatMap(list -> {
    if (list.isEmpty()) {
        return eventSourceB;
    }
    return Single.just(list);
})
.subscribe(list -> { /* ... */ });