使用observables改进并行响应处理

问题描述:

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

我不能使用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)); 

结合所有的呼叫到一个可观察到的,通过使用.flatMap()或什么,并在.doOnSubcribe()通/断开关旋转器.doAfterTerminate()关闭的可观测值。