以下情景: 我有一个动态的arraylist与f.e. IDS。我想为这个列表中的每个id做一个api的请求。只有当前一个请求获得成功答案时,才能启动以下请求。所以没有任何要求。 有什么好方法可以通过改装和rxjava来接收它。
我有一个带有递归函数的解决方案:
foo(int position, List<Int> idList, ApiController controller){
if(idList.size() < position){
//execute finish
}else{
controller.postRequest().subscribe(()->{
//Request finish. Do next request...
foo(++position, idList, controller);});
}
有没有办法在rxjava2中做到这一点?
我刚刚想出了一个针对rxjava2的异步解决方案: (这对我来说很好看,但并没有完全填满这份工作......
Observable.fromIterable(idList).flatMapCompletable(id -> {
controller.doRequests();})
.subscribe(()->{
//Finished all requests. Do stuff
});
答案 0 :(得分:0)
似乎用flatatMapCompletable替换flatMapCompletable正在做的工作。
Observable.fromIterable(idList).concatMapCompletable(id -> {
controller.doRequests();})
.subscribe(()->{
//Finished all requests. Do stuff
});