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
如果我不这样做不想发射多个东西?
我正在尝试弄清楚如何获取 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
如果我不这样做不想发射多个东西?