Java 为什么不叫doOnDispose?
当创建这样的可观察对象时:Java 为什么不叫doOnDispose?,java,rx-java2,Java,Rx Java2,当创建这样的可观察对象时: public void foo() { Observable observable = Observable.fromCallable(() -> { bar(); return ""; }) .doOnSubscribe(disposable -> System.out.println("onSubscribe")) .doOnDispose(() -> System.o
public void foo() {
Observable observable = Observable.fromCallable(() -> {
bar();
return "";
})
.doOnSubscribe(disposable -> System.out.println("onSubscribe"))
.doOnDispose(() -> System.out.println("onDispose"));
Disposable disposable = observable.subscribe();
disposable.dispose();
}
private void bar() {
System.out.println("bar");
}
调用了doOnSubcribe
,而未调用doOnDispose
为什么会这样?您需要使用
doFinally()
操作符
doOnDispose()
有一个非常狭窄的用例,在这个用例中,可观察对象被显式地处理。在您的示例中,可观察对象通过onComplete()
自然终止。当您调用dispose()
时,可观察对象已经完成,并且不会发生任何事情——处理完成的可观察对象没有任何效果