- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用Maybe
RxJava2 中的类。
我注册了doOnDispose
回调来检测 Dispose 事件,但它没有被触发。
Maybe.just("aaa")
.doOnDispose({ /* do something */ })
.subscribe( ... )
我查看了 RxJava 2 代码,但 Maybe
似乎不支持 doOnDispose
。
Maybe
是在 doOnDispose
中创建 MaybePeek
(不是 DoOnDisposeObserver
)对象,,,
@CheckReturnValue
@SchedulerSupport("none")
public final Maybe<T> doOnDispose(Action onDispose) {
return RxJavaPlugins.onAssembly(new MaybePeek(this, Functions.emptyConsumer(), Functions.emptyConsumer(), Functions.emptyConsumer(), Functions.EMPTY_ACTION, Functions.EMPTY_ACTION, (Action)ObjectHelper.requireNonNull(onDispose, "onDispose is null")));
}
protected void subscribeActual(MaybeObserver<? super T> observer) {
this.source.subscribe(new MaybePeek.MaybePeekObserver(observer, this));
}
但是,Single
已创建 DoOnDisposeObserver
,并且工作正常。
@CheckReturnValue
@SchedulerSupport("none")
public final Single<T> doOnDispose(Action onDispose) {
ObjectHelper.requireNonNull(onDispose, "onDispose is null");
return RxJavaPlugins.onAssembly(new SingleDoOnDispose(this, onDispose));
}
protected void subscribeActual(SingleObserver<? super T> s) {
this.source.subscribe(new SingleDoOnDispose.DoOnDisposeObserver(s, this.onDispose));
}
为什么不支持Maybe.doOnDispose
?
最佳答案
正如文档中所说的doOnDispose(Action onDispose)
Calls the dispose Action if the downstream disposes the sequence.
由于您的下游从未处置它,因此它永远不会调用。
Disposable disposable = Maybe.just("aaa")
.doOnDispose({ /* do something */ })
.subscribe( ... )
disposable.dispose();
现在应该调用 doOnDispose
中的操作。
请注意,如果完成流的时间少于进入下一个操作 (disposable.dispose()
) 的时间,则不应执行 onDispose
操作叫。因此,为了验证它,您可以使用延迟:
Disposable disposable = Maybe.just("aaa")
.delay(2000, TimeUnit.MILLISECONDS)
.doOnDispose({ /* do something */ })
.subscribe( ... )
disposable.dispose();
现在应该触发该操作。
关于java - 为什么RxJava2不支持 "Maybe.doOnDispose"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47196879/
当像这样创建一个 Observable 时: public void foo() { Observable observable = Observable.fromCallable(() ->
我正在使用Maybe RxJava2 中的类。 我注册了doOnDispose回调来检测 Dispose 事件,但它没有被触发。 Maybe.just("aaa") .doOnDispose(
这段代码 @RunWith(JUnit4::class) class Playground { @Test fun test() { val subject1 = Be
我是一名优秀的程序员,十分优秀!