#scala #rx-java
#scala #rx-java
Вопрос:
У меня есть, 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
не получаю желаемого эффекта (на самом деле я не наблюдаю никаких побочных эффектов).
Как я могу этого добиться? Возможно ли это?
Комментарии:
1. Вы ожидаете, что ваши «действия» будут выполняться после того, как каждое из них
Item
преобразуется вAnotherItem1
, или после того, как весьobservable
поток будет преобразован вobservable1
?
Ответ №1:
Вы пробовали регистрировать какую-либо информацию с помощью .doOnNext()
? Возможно, что ни один из наблюдаемых объектов не завершается, объясняя, почему .doOnCompleted()
не был вызван. Убедитесь, что наблюдаемые завершены, если вы хотите иметь побочный эффект при завершении.
Комментарии:
1. Получу ли я желаемое поведение при таком подходе? Я создаю наблюдаемый как
val observable: Observable[Int] = Observable.from(Stream(1,2,3,4))
2. Это зависит от того, какое поведение вы хотите. Вы хотите выполнить побочные эффекты при завершении, то есть в
doOnCompleted
. Было бы очень полезно, если бы вы показали, какие преобразования вы выполняете (т. Е. заменили...
в коде).3. Предположим, я делаю только
map
иgroupBy
4. Как
observable1
зависит от наблюдаемого? Иobservable2
?5.
observable1 = observable.map
,observable2 = observable1.map