用可观察量进行Retrofit2并行响应处理

时间:2017-10-20 08:57:30

标签: android rx-java retrofit2 rx-android

我正在处理一个应用,用户可以在注册后编辑他/她的个人资料。问题是编辑配置文件使用多个API调用后端。一个用于编辑电子邮件,一个用于编辑密码等等。我将retrofit2与RxJava结合使用,因此调用是Observables / Singles。当用户按下编辑按钮并且在不同线程上执行调用时,将显示微调器。如果它们并行执行,我该如何处理成功/失败?用户需要知道编辑是否成功,并且还在调用完成时隐藏微调器。我无法使用combineLatest,因为用户可能会选择只更改他们的电子邮件或个人资料图片或名称,因此只会调用那些而不是全部。

2 个答案:

答案 0 :(得分:0)

  

我不能使用combineLatest,因为用户可能只选择更改   他们的电子邮件或个人资料图片或名称,只有那些将被调用   而不是所有人

也许你可以伪造API调用。

Observable.zip(
        pictureObservable.flatmap(picture -> {
             if (picture.isNotChanged) return Observable.just(API.SUCCESS);
             else return api.editObservable(picture); 
        }, 
        emailObservable.flatmap(email -> {
             if (email.isNotChanged)  return Observable.just(API.SUCCESS);
             else return api.editObservable(email);
       }, (pictureApiResponse, emailApiResponse) -> apiResponse));

答案 1 :(得分:0)

使用 .flatMap()或其他方法将所有调用合并到一个observable中,并在 .doOnSubcribe() 上打开/关闭微调器 .doAfterTerminate() 关闭组合的observable。