Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中使用rxJava生成一组未定义数量的并行请求?_Android_Rx Java_Zip Operator - Fatal编程技术网

如何在Android中使用rxJava生成一组未定义数量的并行请求?

如何在Android中使用rxJava生成一组未定义数量的并行请求?,android,rx-java,zip-operator,Android,Rx Java,Zip Operator,目前我有一个返回参数列表的服务。如果有4个参数,我需要使用每个参数对同一端点的每个参数执行一个请求。之后,我需要将所有请求的结果列表保存到集合中。如果我不知道需要执行多少个请求,我需要使用什么rxJava操作符以及应该如何使用它??。 考虑到我不需要等待第一个请求的响应来执行第二个请求,并且 我已经看到zip操作符允许我执行并行请求,但我必须知道使用它的请求数 您可以使用flatMap为每个参数创建可观察的,并像中一样并行执行它们 Observable.fromArray(parameters)

目前我有一个返回参数列表的服务。如果有4个参数,我需要使用每个参数对同一端点的每个参数执行一个请求。之后,我需要将所有请求的结果列表保存到集合中。如果我不知道需要执行多少个请求,我需要使用什么rxJava操作符以及应该如何使用它??。 考虑到我不需要等待第一个请求的响应来执行第二个请求,并且


我已经看到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())
更改
观察器中的
线程
?是的,谢谢