我有一个返回FamilyDetails
的API。我使用改造来获取它们,它的建模如下:
Observable<FamilyDetails> getFamilyDetails(@Query int personId);
获取后,这些详细信息将用于更新Person
。我的API会在有一些信息显示后立即提供FamilyDetails
,这意味着详细信息可能不完整,因此当服务器没有时,响应中会传递complete = false
个标记完成获取所有家庭详细信息 - 反过来,如果我们在第一个回复中收到FamilyDetails
,我的应用应发送另一个请求来获取剩余的complete = false
,并且只要详细信息仍然不完整,我们就会继续这样做。
我有点&#34;有点&#34;实现了我想要的,但不完全是这个代码:
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
。
我对此实施所遇到的问题是,部分更新不会通过personSubscriber
onNext()
,因为我只接到onNext()
的一次调用已更新的Person
对象及其完整FamilyDetails
。
我想使用RxJava对此进行建模,具有以下要求:
Person
这些详细信息所属的对象,并通过onNext()
传递。Person
提供更新的onNext()
个对象。onNext()
拨打了最后一次Person
来电,然后调用了onComplete()
,我们就完成了。提前致谢!
答案 0 :(得分:6)
personApiService.getFamilyDetails(personId)
// repeat call
.repeat()
// until family details are complete
.takeUntil(familyDetails -> familyDetails.isComplete())
//subscribe (do your updates here)
.subscribe(personSubscriber);