gpt4 book ai didi

android - RxJava 等待一个与订阅者一起观察的对象 等待另一个与另一个订阅者一起观察的对象

转载 作者:行者123 更新时间:2023-11-29 19:27:25 24 4
gpt4 key购买 nike

我一直在寻找这个问题,但找不到解决方案(或者我可能无法根据其他答案做出解决方案)。

我的问题是我需要找到一种方法来等待一个可观察对象(有自己的订阅者)并等待另一个可观察对象(有自己的订阅者)完成。

这是场景:

obs1 -> retryWith(tokenAuthenticator) -> subscriber1 -> Update UI

obs2 -> Needs to wait for obs1 to get new token -> subscriber2 -> Update UI

我主要担心的是我需要两个订阅者。就我的观点而言,obs1 和 obs2 并行运行,但需要检查 obs1 是否使用新的 session token 完成。也许这不是 RxJava 的主要目的。

Obs1 连接到 HTTP 连接并获取一个 Json,其中包含用于填充 UI 的数据,obs2 也是如此,但使用其他 json 和其他信息来填充 UI。

对我来说唯一的问题是我的 session token 每 5 分钟过期一次,当我尝试获取新的 session token 时,obs2 已经使用过期的 session token 进行了调用。

简单的解决方案是在 onComplete() subscriber1 中执行 obs2,但我知道它必须是一个更好的解决方案,使用 RxJava。

最佳答案

查看 zip,它将允许您合并两个 observable 的结果(如果需要,可以并行运行)。这是一个例子:

obs1.subscribeOn(Schedulers.io())
.zipWith(obs2.subscribeOn(Schedulers.io()), (x,y) -> new Both(x,y))
.doOnNext(both -> updateUI(both))
.subscribe();

关于android - RxJava 等待一个与订阅者一起观察的对象 等待另一个与另一个订阅者一起观察的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41001449/

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