我有两个具有不同泛型类型的Observable:Observable o1和Observable o2
我被定义为o1 onComplet()和onNext()函数,我希望当这个Observable完成后,o2就可以开始了。
我尝试了Observable.concat(),但它们有不同的类型,所以这种方法不起作用......
那我怎么能这样做?
答案 0 :(得分:7)
在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);
答案 1 :(得分:0)
Observable有一个名为doOnCompleted
的方法,它接受Action0
(零参数函数)并返回一个新的Observable,它在正常完成时执行动作。也许你可以用它来达到你想要的效果?
o1.doOnCompleted(() -> {
// Start o2.
});