2017-02-10 9 views
1

Я просто изучаю RxJava 2, и после того, как код рефакторинга использовать Single вместо Observable, я обнаружил, что Single не реализует doAfterTerminate().Почему doAfterTerminate() отсутствует в Single <> в RxJava 2?

Это выглядит для меня быть упущение, так как все Flowable, Completable и Maybe типы появляются реализовать doAfterTerminate().

Что дает?

+2

Похоже было упущено, PR-прием. – akarnokd

+2

@HolySamosa, я создал PR для упомянутых функций (https://github.com/ReactiveX/RxJava/pull/5093), поэтому, надеюсь, он будет доступен в следующей версии. – Vesko

+0

@Vesko Спасибо! Очень признателен. – HolySamosa

ответ

1

Действительно, этот оператор отсутствовал из-за отсутствия спроса на него. 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(); 
0

Теперь, потому что RxJava уже обновлены, вы можете обновить RxJava2 версию в вашем коде. В настоящее время последняя версия 2.1.0, так что добавьте эту строку вашего модуля build.gradle:

compile 'io.reactivex.rxjava2:rxjava:2.1.0'