如何在Android中使用rxJava生成一组未定义数量的并行请求?
目前我有一个返回参数列表的服务。如果有4个参数,我需要使用每个参数对同一端点的每个参数执行一个请求。之后,我需要将所有请求的结果列表保存到集合中。如果我不知道需要执行多少个请求,我需要使用什么rxJava操作符以及应该如何使用它??。 考虑到我不需要等待第一个请求的响应来执行第二个请求,并且如何在Android中使用rxJava生成一组未定义数量的并行请求?,android,rx-java,zip-operator,Android,Rx Java,Zip Operator,目前我有一个返回参数列表的服务。如果有4个参数,我需要使用每个参数对同一端点的每个参数执行一个请求。之后,我需要将所有请求的结果列表保存到集合中。如果我不知道需要执行多少个请求,我需要使用什么rxJava操作符以及应该如何使用它??。 考虑到我不需要等待第一个请求的响应来执行第二个请求,并且 我已经看到zip操作符允许我执行并行请求,但我必须知道使用它的请求数 您可以使用flatMap为每个参数创建可观察的,并像中一样并行执行它们 Observable.fromArray(parameters)
我已经看到zip操作符允许我执行并行请求,但我必须知道使用它的请求数 您可以使用
flatMap
为每个参数
创建可观察的
,并像中一样并行执行它们
Observable.fromArray(parameters)
.flatMap(val -> Observable.just(val)
.subscribeOn(Schedulers.io())
.map(request -> doApiCall(request))
)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(response -> log(response));
最后,我以这种方式实现了它:
公共订阅getElementsByStage(列出所需阶段){
列表<可观察>可观察=新阵列列表<>();
用于(字符串阶段:requiredStages){
ElementsRequest请求=buildElementRequest(阶段);
add(request).subscribeOn(Schedulers.newThread());
}
Observable zippedObservables=Observable.zip(observables,this::arrangeElementsByStage);
返回zippedObservables
.observeOn(AndroidSchedulers.mainThread())
.subscribe(新订户(){
.....
}
}
您的调用.subscribeOn(AndroidSchedulers.mainThread())
将不会影响更改线程,如果它是。observeOn(AndroidSchedulers.mainThread())
更改观察器中的线程
?是的,谢谢