Снова испустить объект, который ранее был сгенерирован в цепочке

Как сгенерировать снова объект, который был сгенерирован ранее в цепочке. Например, если у нас есть следующий сценарий, как лучше всего выпустить сумму?

Single.just(123)
    .zipWith(getConstant(), this::add)
    .map(sum -> getObject(sum))
    .flatMapCompletable(object -> doSomething(object))
    .andThen(Observable.just(sum)); //How to emit sum? 
                                    //What's the best option to do that without breaking the chain
                                    //What's the best practice for this situations?
                                    //Is this bad approach and does not follow Functional principles?

private Observable<Integer> getConstant() {
    return Observable.create(321);
}

private Integer add(Integer first, Integer second) {
    return first + second;
}

private Object getObject(Integer num) {
    return new Object();
}

private Completable doSomething(Object object) {
    return new Object();
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте flatMap:

Single.just(123)
.zipWith(getConstant(), this::add)
.flatMap(sum -> 
     doSomething(getObject(sum))
     .andThen(Single.just(sum))
);

Вроде нормально! : D Спасибо!

Vaios 21.03.2018 17:59

Другие вопросы по теме