Один Observable должен генерировать элементы на основе других Observable, и оба Observable не связаны

У меня есть два разных Observables, которые ведут себя как

Наблюдаемое поведение -> Это будет создано, и один DisposableObserver будет подписан на него и будет реагировать на элементы, испускаемые Observable One. Это будет работать непрерывно, пока приложение не будет закрыто.

Поведение Observable two -> Это будет создано и подписано на другой Observer в другое время, и после подписки это должно выдавать значения на основе значений, выпущенных Observable one после того, как Observable two подписан. Как только работа будет выполнена, две подписки Observable будут удалены, но одна подписка Observable будет продолжена.

Как я могу сделать вторые излучаемые значения Observable на основе излучаемых значений Observable и удалить их после завершения?


person user3416215    schedule 16.01.2019    source источник


Ответы (2)


Если observableOne может иметь только одну подписку, вы можете сделать это двумя способами. Самый простой способ - ввести Subject; он будет подписан на observableOne, а все остальные подписчики подпишутся на тему:

PublishSubject<DataType> observableOneStream = PublishSubject.create();

observableOne
  .subscribe( observableOneStream );
...
observableOneStream.subscribe( firstSubscription );
...
observableOneStream.subscribe( secondSubscription );
person Bob Dalgleish    schedule 17.01.2019

Вы можете flatMap значения из одного наблюдаемого в два наблюдаемого.

observableOne.flatMap(obsOneValue -> observableTwo(obsOneValue))
        .subscribe(obsTwoValue -> {

        });

тогда у вас может быть метод Observable<ObsTwoValue> observableTwo(ObsOneValue obsOneValue), который создаст Observable two на основе выбросов Observable one.

person Tuby    schedule 17.01.2019