我有一个返回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();
}
答案 0 :(得分:4)
while($row = $result->fetch_array()) {
$i=0;
while($i<count($row)){
echo $row[$i];
$i++;
}
}
运算符执行此操作,您无需进一步应用其他运算符。
来自文档:
当所有映射的Completables完成其操作时,将上游Observable的每个元素映射到CompletableSources,订阅它们并等待上游和所有CompletableSources完成。
flatMapCompletable
将返回flatMapCompletable
:
Completable