为什么 RxJava 2 中的 Single<> 中缺少 doAfterTerminate()?

Why is doAfterTerminate() missing from Single<> in RxJava 2?

我刚刚学习 RxJava 2,在重构代码以使用 Single 而不是 Observable 后,我发现 Single 没有实现 doAfterTerminate()

这在我看来是一个疏忽,因为所有 FlowableCompletableMaybe 类型似乎都实现了 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'