RxJava - 重复 API 调用直到结果完成

RxJava - repeat API call until result is complete

我有一个 API returns FamilyDetails。我使用 retrofit 来获取它们,它的模型如下:

Observable<FamilyDetails> getFamilyDetails(@Query int personId);

获取后,这些详细信息将用于更新 Person。我的 API 在有一些信息要显示时立即传递那些 FamilyDetails,这意味着详细信息可能不完整,因此当服务器没有响应时会传递一个 complete = false 标志' 完成获取所有家庭详细信息 - 反过来,如果我们在第一个响应中收到 complete = false,我的应用程序应该发送另一个请求以获取剩余的 FamilyDetails,并且只要详细信息仍然存在,就继续这样做不完整。

我已经 "somewhat" 实现了我想要的,但不完全是用这个代码:

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 returns 一个更新的 Person

我在这个实现中遇到的问题是,部分更新不会通过 personSubscriberonNext(),因为我只收到一次调用 onNext() 更新的 Person 对象及其完整 FamilyDetails.

我想使用具有以下要求的 RxJava 对此进行建模:

提前致谢!

personApiService.getFamilyDetails(personId)
// repeat call
.repeat()
// until family details are complete
.takeUntil(familyDetails -> familyDetails.isComplete())
//subscribe (do your updates here)
.subscribe(personSubscriber);