有没有办法实现以下目标:
我有3个Observable< MyData>类型的可观察对象.我想要的是:
>运行第一个可观察的
>观察第一个观察者的onCompleted
>运行第二个observable
>观察第二个可观测量的onCompleted
>运行第三个observable
>观察第三个可观测量的onCompleted
这可以通过concat来完成,但是我只能观察到最后的onCompleted.
难看的解决方案
我知道,如果我从前者的onCompleted事件中开始下一个obersvable,我就可以实现这一目标.
题
即使有任意数量的可观察量,还有其他方法可以达到这个目的吗?我想避免从onCompleted事件中将这一切链接在一起,因为这看起来非常难看,链接越深,它就越不清楚……
编辑 – UseCase
>首先,我想发出代表我的应用程序上次启动时加载的数据的数据(我将数据序列化为光盘)=>原因是,我想要一个非常快速的应用程序启动
>然后我想要第二次加载数据,以便在空状态下加载最新数据
>然后我想要第三次加载数据来加载最新数据的缺失深层数据
我想不断更新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 }