Я использую приложение RxJava и Android с RxAndroid. Я использую mergeDelayError, чтобы объединить два сетевых сетевых адаптационных привязки в один наблюдаемый, который будет обрабатывать испускаемые элементы, если он испускает один, и ошибку, если он имеет один, Это не работает, и оно только активирует действие onError, когда либо встречается ошибка. Теперь, чтобы проверить это, я перешел на очень простой пример, и все еще успехAction никогда не вызывается, когда у меня есть вызов onError. См. Пример ниже.
Observable.mergeDelayError(
Observable.error(new RuntimeException()),
Observable.just("Hello")
)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.finallyDo(completeAction)
.subscribe(successAction, errorAction);
Действие успеха будет вызвано только при использовании двух наблюдаемых результатов. Я что-то пропустил, как должно работать mergeDelayError?
EDIT:
Я обнаружил, что если я удалю observeOn
и subscribeOn
, все будет работать так, как ожидалось. Мне нужно указать потоки и подумать, что это была цель использования Rx. Любая идея, почему указание этих Schedulers
нарушит поведение?