RxJava 等待一个与订阅者一起观察的对象 等待另一个与另一个订阅者一起观察的对象
RxJava wait for one observable with subscriber wait for another observable with other subscriber
我一直在寻找这个问题,但找不到解决方案(或者我可能无法根据其他答案做出解决方案)。
我的问题是我需要找到一种方法来等待一个可观察对象(有自己的订阅者)并等待另一个可观察对象(有自己的订阅者)完成。
场景是这样的:
obs1 -> retryWith(tokenAuthenticator) -> subscriber1 -> Update UI
obs2 -> Needs to wait for obs1 to get new token -> subscriber2 ->
Update UI
我主要担心的是我需要两个订阅者。对于我的观点,obs1 和 obs2 运行 并行但需要检查 obs1 是否使用新的会话令牌完成。也许这不是RxJava的主要目的。
Obs1 连接到一个 HTTP 连接并获得一个 Json,其中包含要填写 UI 的数据,对于 obs2 也是如此,但会使用其他 json 和其他信息来填写 UI UI.
对我来说唯一的问题是我的会话令牌每 5 分钟过期一次,当我尝试获取新的会话令牌时,obs2 已经使用过期的会话令牌进行了调用。
简单的解决方案是在 onComplete() subscriber1 中执行 obs2,但我知道它必须是一个更好的解决方案,使用 RxJava。
查看 zip
,它将允许您合并两个可观察对象的结果(如果需要,可以并行 运行)。这是一个例子:
obs1.subscribeOn(Schedulers.io())
.zipWith(obs2.subscribeOn(Schedulers.io()), (x,y) -> new Both(x,y))
.doOnNext(both -> updateUI(both))
.subscribe();
我一直在寻找这个问题,但找不到解决方案(或者我可能无法根据其他答案做出解决方案)。
我的问题是我需要找到一种方法来等待一个可观察对象(有自己的订阅者)并等待另一个可观察对象(有自己的订阅者)完成。
场景是这样的:
obs1 -> retryWith(tokenAuthenticator) -> subscriber1 -> Update UI
obs2 -> Needs to wait for obs1 to get new token -> subscriber2 -> Update UI
我主要担心的是我需要两个订阅者。对于我的观点,obs1 和 obs2 运行 并行但需要检查 obs1 是否使用新的会话令牌完成。也许这不是RxJava的主要目的。
Obs1 连接到一个 HTTP 连接并获得一个 Json,其中包含要填写 UI 的数据,对于 obs2 也是如此,但会使用其他 json 和其他信息来填写 UI UI.
对我来说唯一的问题是我的会话令牌每 5 分钟过期一次,当我尝试获取新的会话令牌时,obs2 已经使用过期的会话令牌进行了调用。
简单的解决方案是在 onComplete() subscriber1 中执行 obs2,但我知道它必须是一个更好的解决方案,使用 RxJava。
查看 zip
,它将允许您合并两个可观察对象的结果(如果需要,可以并行 运行)。这是一个例子:
obs1.subscribeOn(Schedulers.io())
.zipWith(obs2.subscribeOn(Schedulers.io()), (x,y) -> new Both(x,y))
.doOnNext(both -> updateUI(both))
.subscribe();