Edu*_*bas 2 android rx-java retrofit2 rx-java2
我有一个返回的API FamilyDetails.我使用改造来获取它们,并建模如下:
Observable<FamilyDetails> getFamilyDetails(@Query int personId);
Run Code Online (Sandbox Code Playgroud)
获取后,这些详细信息将用于更新a Person.我的API FamilyDetails会在有一些信息显示时立即提供,这意味着细节可能不完整,因此complete = false当服务器尚未完成获取所有家庭详细信息时,响应中会有一个标记 - 反过来,我的应用程序应该FamilyDetails如果我们complete = false在第一个响应中收到,则发送另一个请求以获取剩余请求,并且只要细节仍然不完整,就继续这样做.
我"有点"实现了我想要的,但不完全是这个代码:
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);
Run Code Online (Sandbox Code Playgroud)
我的personSubscriber返回更新了Person.
我有这个实现的问题是,部分更新不通过personSubscriber的onNext(),因为我只得到一个呼叫onNext()与更新Person其完整的对象FamilyDetails.
我想使用RxJava对此进行建模,具有以下要求:
Person
这些详细信息所属的对象,并通过它提供onNext().Person通过的物体onNext()在同一观察者.onNext()使用更新的最后一次调用Person,然后onComplete()被调用,我们就完成了.提前致谢!
personApiService.getFamilyDetails(personId)
// repeat call
.repeat()
// until family details are complete
.takeUntil(familyDetails -> familyDetails.isComplete())
//subscribe (do your updates here)
.subscribe(personSubscriber);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2834 次 |
| 最近记录: |