Регистрация нескольких подпрограмм завершения

У меня есть Observable, который построен из Stream[Item](Item здесь просто для примера). Этот наблюдаемый проходит через набор преобразований:

val observable: Observable[Item] = ... //construct observable from stream
val observable1: Observable[AnotherItem1] = observable.map(...) //transform to AnotherItem1
val observable2: Observable[AnotherItem2] = observable1.map(...) //transform to AnotherItem2

Я хочу выполнить некоторые действия по завершении каждого преобразования (первого и второго). Если я вызову метод doOncompleted на observable1 и observable2, я не получу желаемого эффекта (на самом деле я не наблюдаю никаких побочных эффектов).

Как я могу это сделать? Это возможно?


person maks    schedule 02.07.2014    source источник
comment
Ожидаете ли вы, что ваши действия будут выполняться после того, как каждый поток Item будет преобразован в AnotherItem1, или после того, как весь поток observable будет преобразован в observable1?   -  person pagoda_5b    schedule 04.07.2014


Ответы (1)


Вы пробовали регистрировать некоторую информацию с помощью .doOnNext()? Возможно, ни одна из наблюдаемых не завершается, что объясняет, почему .doOnCompleted() не был вызван. Убедитесь, что наблюдаемые объекты завершены, если вы хотите иметь побочный эффект при завершении.

person André Staltz    schedule 02.07.2014
comment
Получу ли я желаемое поведение при таком подходе? Я строю наблюдаемое как val observable: Observable[Int] = Observable.from(Stream(1,2,3,4)) - person maks; 02.07.2014
comment
Это зависит от того, какое поведение вы хотите. Вы хотите сделать побочные эффекты по завершении, то есть в doOnCompleted. Было бы очень полезно, если бы вы показали, какие преобразования вы делаете (например, замените ... в коде). - person André Staltz; 02.07.2014
comment
Предположим, я делаю только map и groupBy - person maks; 02.07.2014
comment
Как observable1 зависит от наблюдаемого? А observable2? - person André Staltz; 02.07.2014
comment
также я пытался вызвать doOnNext, и никаких побочных эффектов не наблюдалось - person maks; 02.07.2014