[英]Why is doOnDispose not called?
When creating an Observable like this: 在创建像这样的Observable时:
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
is called, doOnDispose
is not called. doOnSubcribe
叫, doOnDispose
不叫。
Why is that? 这是为什么?
You need to use the doFinally()
operator. 您需要使用
doFinally()
运算符。
doOnDispose()
has a very narrow use case, where the observable is explicitly disposed. doOnDispose()
有一个非常狭窄的用例,其中observable被明确处理。 In your example, the observable terminates "naturally" by onComplete()
. 在您的示例中,observable由
onComplete()
“自然地”终止。 By the time that you call dispose()
, the observable is done, and nothing will happen -- disposing a completed observable has no effect. 当你调用
dispose()
,observable就完成了,什么都不会发生 - 处理完成的observable没有任何效果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.