如何将Completable任务列表合并为一个Completable结果?

时间:2017-08-22 05:06:13

标签: java rx-java rx-android rx-java2 reactivex

我有一个返回Single<List<Item>>的方法,我想把这个列表中的每个项目都传递给下游一个返回Completable的方法。我想等到每个项目都成功完成并返回Completable结果。我最初的方法是使用flatMapIterable分别处理每个项目,并使用toList合并结果,但我无法在toList对象上调用Completable。有没有其他方式来&#34;聚合&#34;以这种方式将许多Completable个任务合并为一个Completable?这就是我到目前为止所拥有的:

public Single<List<Item>> getListOfItems() {
    ...
}

public Completable doSomething(Item item) {
    ...
}

public Completable processItems() {
    return getListOfItems()     
        .toObservable()
        .flatMapIterable(items -> items)
        .flatMapCompletable(item -> doSomething(item))
        .toList()    // ERROR: No method .toList() for Completable
        .ignoreElements();
}

1 个答案:

答案 0 :(得分:4)

while($row = $result->fetch_array()) { $i=0; while($i<count($row)){ echo $row[$i]; $i++; } } 运算符执行此操作,您无需进一步应用其他运算符。

来自文档:

  

将上游Observable的每个元素映射到CompletableSources,订阅它们并等待上游和所有CompletableSources完成。

当所有映射的Completables完成其操作时,

flatMapCompletable将返回flatMapCompletable

Completable