RxJava:将单个项目的流转换为列表

RxJava: Convert stream of individual items to a list

我正在尝试弄清楚如何获取 return 项目列表的响应,然后对将 return 一个对象的每个项目发出请求,然后组合所有项目将响应放入列表中。

我通过一次发出一个来让它工作,但我想将它们全部打包回一个列表中。

目前我有这个

getListOfData()
.flatMapIterable(list -> list)
.flatMap(item -> getData(item)

我试过 toList() 但我知道这需要一个完整的信号才能 return 任何东西。

我正在使用 rxjava 2,我觉得我在 rxjava 1 中用 toList() 做了这个并且它按预期工作。任何帮助将不胜感激!

尝试使用 fromIterable 而不是 flatMapIterable,然后 toList() 应该可以工作

这行得通吗?

getListOfData()
.flatMapIterable(list -> list)
.flatMap(item -> getData(item))
.flatMap(itemList -> Observable.from(itemList)) // <-- magic here. Maps each result List<Something> to Observable<Something>

谜团解开了。

我的原始示例使用 toList()

问题是我没有在我的 PublishSubject 上调用 onComplete 我只是在做 onNext 也许我不应该使用 PublishSubject 如果我不这样做不想发射多个东西?