我有两个不同泛型类型的Observables:Observable o1和Observable o2。
我已经为o1定义了onComplete()和onNext()函数,并且当这个Observable完成时,我希望o2可以开始。
我尝试过使用Observable.concat(),但它们具有不同的类型,所以这种方法行不通...
那么我该怎么做呢?
我有两个不同泛型类型的Observables:Observable o1和Observable o2。
我已经为o1定义了onComplete()和onNext()函数,并且当这个Observable完成时,我希望o2可以开始。
我尝试过使用Observable.concat(),但它们具有不同的类型,所以这种方法行不通...
那么我该怎么做呢?
在使用concatWith
之前,请使用castAs
(还可以使用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.
});