【发布时间】:2016-12-06 17:34:33
【问题描述】:
我一直在寻找这个问题,但找不到解决方案(或者我可能无法根据其他答案做出解决方案)。
我的问题是我需要找到一种方法来等待一个可观察对象(带有自己的订阅者)并等待另一个可观察对象(带有自己的订阅者)完成。
这是场景:
obs1 -> retryWith(tokenAuthenticator) ->subscriber1 -> 更新 UI
obs2 -> 需要等待obs1获取新token -> 订阅者2 -> 更新界面
我主要担心的是我需要两个订阅者。在我看来,obs1 和 obs2 并行运行,但需要检查 obs1 是否使用新的会话令牌完成。也许这不是 RxJava 的主要目的。
Obs1 连接到一个 HTTP 连接并获取一个 Json,其中包含要填充 UI 的数据,而 obs2 也是如此,但还有其他 json 和其他信息要填充 UI。
对我来说唯一的问题是我的会话令牌每 5 分钟过期一次,当我尝试获取新令牌时,obs2 已经使用过期的会话令牌进行调用。
简单的解决方案是在 onComplete() 订阅者1 中执行 obs2,但我知道它必须是更好的解决方案,使用 RxJava。
【问题讨论】:
-
Rxjava 为您提供了各种可以帮助您的运算符,您可以尝试使用这些运算符,例如。重试、重试时间、去抖动等
-
如果问题仅出现在令牌刷新中,那么您可以尝试来自 okhttp 客户端的原生
Authenticator我在其他问题中描述了它:stackoverflow.com/questions/40762911/…
标签: android rx-java reactive-programming rx-android