【问题标题】:How to perform n calls sequentially with RxJava2 and Retrofit如何使用 RxJava2 和 Retrofit 顺序执行 n 次调用
【发布时间】:2018-06-08 14:58:17
【问题描述】:

所以下面的场景: 我有一个带有 f.e. 的动态数组列表。身份证。我想为这个列表中的每个 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
});

【问题讨论】:

标签: android retrofit2 rx-java2


【解决方案1】:

似乎用 concatMapCompletable 替换 flatMapCompletable 是可行的。

Observable.fromIterable(idList).concatMapCompletable(id -> {
controller.doRequests();})
.subscribe(()->{
//Finished all requests. Do stuff
});

【讨论】:

    猜你喜欢
    • 2018-12-29
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多