gpt4 book ai didi

android - RXJava - 一个接一个地运行多个可观察对象(像 concat,但每个可观察对象都有 onCompleted)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:15 25 4
gpt4 key购买 nike

有什么方法可以达到以下目的:

我有 3 个 Observable<MyData> 类型的可观察对象.我想要的是:

  • 运行第一个 observable
  • 观察onCompleted第一个可观察的
  • 运行第二个 observable
  • 观察onCompleted第二个可观察的
  • 运行第三个 observable
  • 观察onCompleted第三个可观察的

这可以通过 concat 来完成但那时我只能观察到最后一个 onCompleted .

丑陋的解决方案

我知道,如果我从 onCompleted 启动下一个可观察对象,我可以做到这一点前者的事件。

问题

即使有任意数量的可观察对象,是否还有其他方法可以实现这一点?我想避免将所有这些从 onCompleted 链接在一起事件,因为这看起来真的很难看,而且链接越深,它就越不清晰......

编辑 - 用例

  • 首先,我想发出代表我的应用程序上次启动时加载的数据的数据(我会将数据序列化到光盘)=> 原因是,我希望应用程序始终能够非常快速地启动
  • 然后我想要第二次运行数据加载,以加载空状态下的最新数据
  • 然后我想进行第三次数据加载,以加载最新数据中缺失的更深层数据

我想不断更新 UI,并且我想知道每一级数据加载何时完成

最佳答案

希望下面的代码对您有所帮助。

Observable<MyData> observable1 = ...;
Observable<MyData> observable2 = ...;
Observable<MyData> observable3 = ...;

Observable
.concat(observable1.doOnCompleted(this::onCompleteObservable1),
observable2.doOnCompleted(this::onCompleteObservable2),
observable3.doOnCompleted(this::onCompleteObservable3))
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe( ... );

这里是示例方法。

void onCompleteObservable1() {
//do some work
}

void onCompleteObservable2() {
//do some work
}

void onCompleteObservable3() {
//do some work
}

关于android - RXJava - 一个接一个地运行多个可观察对象(像 concat,但每个可观察对象都有 onCompleted),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38974960/

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