RXJAVA-重复API调用,直到结果完成为止



我有一个返回 FamilyDetails的API。我使用翻新来获取它们,并将其建模如下:

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

获取后,这些详细信息将用于更新Person。我的API一旦显示一些信息要显示,就会提供这些FamilyDetails,这意味着细节可能不完整,因此,当服务器尚未完成所有访问所有家庭详细信息时,在响应中提供了一个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

我在此实现方面遇到的问题是,部分更新不会通过personSubscriberonNext(),因为我只接到一个带有完整FamilyDetailsPerson对象的onNext()调用。

我想使用RXJAVA对此进行建模,并具有以下要求:

  • 如果我收到不完整的详细信息,请更新Person这些细节属于并通过onNext()
  • 进行交付
  • 如果我们收到不完整的详细信息,我们会继续向API查询以了解完整的详细信息,并通过 in 中的onNext()进行更新的Person对象。
  • 一旦我们获得了更新的Person的最后一个onNext()调用,然后将onComplete()调用,我们完成了。

预先感谢!

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

最新更新