2017-10-20 25 views
0

私はユーザーが登録後にプロフィールを編集できるアプリケーションに取り組んでいます。問題は、プロファイルの編集で複数のAPIコールがバックエンドに使用されることです。電子メールを編集するためのもの、パスワードを編集するためのものなど。私はRxJavaと一緒にretrofit2を使用しているので、呼び出しはObservables/Singlesです。ユーザーが編集ボタンを押して、呼び出しが別のスレッドで実行されると、スピンが表示されます。並行して実行されると成功/失敗をどのように処理するのですか?ユーザは、編集が成功したかどうかを知る必要があり、呼び出しが完了したときにスピナーも隠す必要があります。私はcombineLatestを使用することはできません。ユーザーが自分のメールやプロフィールの画像や名前だけを変更することができるからです。Observableを使ったRetrofit2の並列レスポンス処理

答えて

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)); 
0

オフ.flatMapを(使用して観察もの)または任意にすべてのコールを結合し、.doOnSubcribe(にオン/オフスピナーを切り替える).doAfterTerminate()観察可能な組み合わせの