当前位置: 代码迷 >> java >> RxJava - 当另一个完成时启动一个Observable
  详细解决方案

RxJava - 当另一个完成时启动一个Observable

热度:150   发布时间:2023-07-25 19:14:46.0

我有两个具有不同泛型类型的Observable:Observable o1和Observable o2

我被定义为o1 onComplet()和onNext()函数,我希望当这个Observable完成后,o2就可以启动了。

我尝试了Observable.concat(),但它们有不同的类型,所以这种方法不起作用......

那我该怎么做?

使用castAs之前concatWith (和ignoreElements可能是有用的太):

Observable<T> o1;
Observable<R> o2;

Observable<R> o3 = 
  o1.ignoreElements()
    .castAs(R.class)
    .concatWith(o2);

或者,如果您正在使用泛型类型(因此不能使用R.class ):

Observable<R> o3 = ((Observable<R>)(Observable<?>)
  o1.ignoreElements())
    .concatWith(o2);

Observable有一个名为doOnCompleted的方法,它接受一个Action0 (一个零参数函数)并返回一个新的Observable,它在正常完成时执行动作。 也许你可以用它来实现你想要的?

o1.doOnCompleted(() -> {
    // Start o2.
});