私はFamilyDetails
を返すAPIを持っています。私はそれらを取得するために改造を使用して、以下のように、それがモデル化されていますRxJava - 結果が完了するまでAPIコールを繰り返す
Observable<FamilyDetails> getFamilyDetails(@Query int personId);
フェッチすると、それらの詳細はPerson
を更新するために使用されます。私のAPIは、いくつかの情報が表示されるとすぐにこれらのメッセージを配信します。つまり、詳細が不完全である可能性があるため、サーバがすべてのファミリ詳細の取得を完了していないときに応答としてcomplete = false
フラグが返されます。アプリは最初の応答でcomplete = false
を受け取った場合に残りのFamilyDetails
を取得する別のリクエストを送信する必要があります。詳細が不完全なままである限り、そのまま続けます。
私は「やや」ではなく、完全にこのコードで、私が望んで達成した:
personApiService.getFamilyDetails(personId)
// repeat call
.flatMap(familyDetails -> personApiService.getFamilyDetails(personId))
// until family details are complete
.takeUntil(familyDetails -> familyDetails.isComplete())
// update the person object with the family details
.flatMap(familyDetails -> Observable.just(updatePerson(familyDetails))
//subscribe!
.subscribe(personSubscriber);
マイpersonSubscriber
戻っ更新Person
が。
私はこの実装を持っている問題は、私が唯一の完全なFamilyDetails
で更新Person
オブジェクトとonNext()
への呼び出しを1つ取得するよう部分的な更新は、personSubscriber
のonNext()
を通過していないということです。
私は、次の要件をRxJavaを使用してこれをモデル化したいと思います:私は不完全な内容を受信した場合、私はそれらの詳細はに属し、onNext()
を経由してお届けPerson
オブジェクトを更新
- 。
- 不完全な詳細が表示された場合は、APIに完全な詳細を問い合わせておき、
Person
オブジェクトをonNext()
での同じオブザーバーに配信します。 onNext()
が更新されてPerson
に更新されると、onComplete()
が呼び出され、完了します。
ありがとうございます!
繰り返し...もちろんありがとう! –