я следующий образец, demontrates проблемы:Observable.doOnCompleted() после того, как абонентское doOnCompleted() был вызван
Observable<Integer> observable = Observable.create(subscriber -> {
IntStream.range(0, 1_00).forEach(subscriber::onNext);
subscriber.onCompleted();
}).doOnCompleted(() -> System.out.println("I'm first, but want to be second"));
observable.subscribe((i)-> {}, (e)-> System.err.println(e),()-> System.out.println("I'm second, but want to be first"));
Если я заменяю наблюдаемый doOnCompleted
с doAfterTerminate
он работает, но он имеет несколько другой семантику.
Как достичь этого абонента onCompleted
будет вызван до doOnCompleted
на наблюдаемом?
Как я понял из документации это устаревший метод в пользу doAfterTerminate и поэтому имеет ту же семантику (будет называться даже если произошла ошибка), что примечание желаемое поведение HTTP: //reactivex.io/documentation/operators/do.html – marknorkin