RxJava2:如何等待列表中的所有Flowable完成?

时间:2018-03-17 11:18:03

标签: java rx-java2

假设我有一个Flowable的列表,我希望在所有Flowable完成之前做一些事情,我该怎么办?

示例代码

List<Flowable<Model>> flowableList = getFlowableList();
List<List<Model>> results = blockUntilAllFlowablesAreFinished(flowableList); // is there a similar method?
... // do something with results

2 个答案:

答案 0 :(得分:2)

我不确定你为什么以同步的方式思考,但我相信你会用以下的方式实现你的目标:

var count = 0;

for (var i = 0; i < myArray.length; i++) {
    if(element == 'something'){
          count++;
    }
});


if(count == 2){
    // Things
}

当然,除了Flowable.combineLatest(flowableList -> { // do something with results }); 之外,还有许多运营商可以让你“结合”#34;可流动的,例如combineLatest。选择一个适合你的https://github.com/ReactiveX/RxJava/wiki/Combining-Observables

答案 1 :(得分:1)

我认为您可以将Flowable.zip()Iterable一起用作参数,当Iterable中的所有Flowable完成时它将会发出。