为什么 RxJava 2 中的 Single<> 中缺少 doAfterTerminate()?
Why is doAfterTerminate() missing from Single<> in RxJava 2?
我刚刚学习 RxJava 2,在重构代码以使用 Single
而不是 Observable
后,我发现 Single
没有实现 doAfterTerminate()
。
这在我看来是一个疏忽,因为所有 Flowable
、Completable
和 Maybe
类型似乎都实现了 doAfterTerminate()
。
什么给了?
确实,由于缺乏需求,此运算符丢失了。 PR #5093 添加了它,并将成为本周三发布的 RxJava 2.0.6 的一部分。
到那时为止最接近的解决方法是 doFinally
:
Single.just(1).doFinally(() -> System.out.println("Done")).subscribe();
Single.error(new IOException()).doFinally(() -> System.out.println("Done")).subscribe();
Single.never().doFinally(() -> System.out.println("Done")).subscribe().dispose();
现在,由于 RxJava 已经更新,您可以在代码中更新 RxJava2 版本。目前,最新版本是 2.1.0,因此将此行添加到模块的 build.gradle
:
compile 'io.reactivex.rxjava2:rxjava:2.1.0'
我刚刚学习 RxJava 2,在重构代码以使用 Single
而不是 Observable
后,我发现 Single
没有实现 doAfterTerminate()
。
这在我看来是一个疏忽,因为所有 Flowable
、Completable
和 Maybe
类型似乎都实现了 doAfterTerminate()
。
什么给了?
确实,由于缺乏需求,此运算符丢失了。 PR #5093 添加了它,并将成为本周三发布的 RxJava 2.0.6 的一部分。
到那时为止最接近的解决方法是 doFinally
:
Single.just(1).doFinally(() -> System.out.println("Done")).subscribe();
Single.error(new IOException()).doFinally(() -> System.out.println("Done")).subscribe();
Single.never().doFinally(() -> System.out.println("Done")).subscribe().dispose();
现在,由于 RxJava 已经更新,您可以在代码中更新 RxJava2 版本。目前,最新版本是 2.1.0,因此将此行添加到模块的 build.gradle
:
compile 'io.reactivex.rxjava2:rxjava:2.1.0'