使用RxJava 2.2.8
:
Observable.fromCallable(() -> "Some data")
.subscribe(
s -> System.out.println(s),
e -> System.err.println(e),
() -> System.out.println("Completed")
);
输出
Some data
Completed
我的问题是为什么onComplete
从来没有被要求执行以下操作?
Observable.interval(1, TimeUnit.SECONDS)
.switchMap(t -> Observable.fromCallable(() -> "Some data"))
.subscribe(
s -> System.out.println(s),
e -> System.err.println(e),
() -> System.out.println("Completed")
);
输出
Some data
Some data
Some data
...
我知道Observable.interval
会创建一个永无止境的流,所以没有onComplete
。我的理解switchMap
是它返回一个可观察的,它触发内部可观察产生的事件(取消任何未决和展平),在这种情况下 Observable.fromCallable
。
现在,这个“内部”可观察对象确实有一个明确的结束(与外部可观察对象不同),那么为什么不在onComplete
这个内部可观察对象上调用呢?
为什么输出不是这样?
Some data
Completed
Some data
Completed
Some data
Completed
...