gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:52:40 24 4
gpt4 key购买 nike

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

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

获取后,这些详细信息将用于更新 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);

我的personSubscriber返回更新的Person .

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

我想使用 RxJava 对此进行建模,并满足以下要求:

  • 如果我收到的详细信息不完整,我会更新 Person对象这些详细信息所属,并通过 onNext() 传递它.
  • 如果我们收到不完整的详细信息,我们会继续查询 API 以获取完整的详细信息,并提供更新的 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);

关于android - RxJava - 重复 API 调用直到结果完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42718015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com