将列表<observable <x []>展平为Observable <x []>

时间:2017-11-16 22:27:12

标签: java android rx-java observable

在我的项目中,我需要对API进行后续调用以从不同的课程中检索摘要,并将其全部存储在List中,如下所示:

List<Observable<Summaries[]>> summaries

然后,我需要对这些可观察对象执行操作,并使用以下内容:

Observable
    .switchOnNext(Observable.from(summaries))
    .doOnNext(summaries -> { actionToBeDone() })

但是,这会对列表中的每个Observable执行操作,而在项目实现中,我只能一次执行所有操作,所以我的问题是:

是否可以

List<Observable<Summaries[]>>

进入

Observable<Summaries[]>

如果没有,是否有解决方法?

1 个答案:

答案 0 :(得分:3)

根据评论,您仍然必须使用concat,然后使用collect加入ArrayList,然后使用toArray map ping:< / p>

Observable.concat(summaries)
.collect(ArrayList::new, (list, summary) -> list.addAll(Arrays.asList(summary)))
.map(list -> list.toArray(new Summaries[list.size()]))
.subscribe(/* ... */);