RxJava - 在另一个 Observable 完成时启动一个 Observable
RxJava - Start one Observable when other one finish
我有两个具有不同泛型类型的 Observable:Observable o1 和 Observable o2
我被定义为 o1 onComplet() 和 onNext() 函数,我希望当这个 Observable 完成时,o2 可以开始。
我尝试了 Observable.concat() 但它们有不同的类型,所以这种方法不起作用...
那我该怎么做呢?
Observable 有一个名为 doOnCompleted
的方法,它采用 Action0
(零参数函数)和 returns 一个新的 Observable,它在正常完成时执行操作。也许你可以用它来实现你想要的?
o1.doOnCompleted(() -> {
// Start o2.
});
在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:Observable o1 和 Observable o2
我被定义为 o1 onComplet() 和 onNext() 函数,我希望当这个 Observable 完成时,o2 可以开始。
我尝试了 Observable.concat() 但它们有不同的类型,所以这种方法不起作用...
那我该怎么做呢?
Observable 有一个名为 doOnCompleted
的方法,它采用 Action0
(零参数函数)和 returns 一个新的 Observable,它在正常完成时执行操作。也许你可以用它来实现你想要的?
o1.doOnCompleted(() -> {
// Start o2.
});
在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);