我剛剛學習RxJava 2,並且在重構代碼以使用Single
而不是Observable
後,我發現Single
未實現doAfterTerminate()
。爲什麼在RxJava 2的單個<>中缺少doAfterTerminate()?
這看起來對我來說是一個疏忽,因爲所有Flowable
,Completable
和Maybe
類型似乎都實現doAfterTerminate()
。
什麼給?
我剛剛學習RxJava 2,並且在重構代碼以使用Single
而不是Observable
後,我發現Single
未實現doAfterTerminate()
。爲什麼在RxJava 2的單個<>中缺少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'
看起來就像是被忽視的,PR的歡迎。 – akarnokd
@HolySamosa,我爲所提到的功能創建了一個PR(https://github.com/ReactiveX/RxJava/pull/5093),所以希望它可以在下一個版本中使用。 – Vesko
@Vesko謝謝!非常感激。 – HolySamosa