Одна наблюдаемая должна излучать предметы на основе других наблюдаемых излучаемых предметов, и обе наблюдаемые не связаны
У меня есть две разные наблюдаемые, которые ведут себя как
Поведение Observable one -> Это будет создано, и один DisposableObserver будет подписан на него и реагирует на элементы, испускаемые Observable One. Это будет работать непрерывно, пока приложение не будет закрыто.
Поведение Observable two -> Это будет создано и подписано на другой Observer в другое время, и после подписки это должно генерировать значения, основанные на значениях, испускаемых Observable one после подписки Observable two. Как только работа будет выполнена, наблюдаемые две подписки будут удалены, но наблюдаемая должна продолжаться.
Как я могу сделать вторые наблюдаемые значения выбросов, основанные на излучаемых наблюдаемых единицах, и утилизировать их после завершения?
2 ответа
Если observableOne
может быть только одна подписка, вы можете сделать это несколькими способами. Самый простой способ - это ввести Subject
; он будет подписан на observableOne
и все остальные подписчики подпишутся на тему:
PublishSubject<DataType> observableOneStream = PublishSubject.create();
observableOne
.subscribe( observableOneStream );
...
observableOneStream.subscribe( firstSubscription );
...
observableOneStream.subscribe( secondSubscription );
Вы можете flatMap
значения от наблюдаемой одного до наблюдаемой двух.
observableOne.flatMap(obsOneValue -> observableTwo(obsOneValue))
.subscribe(obsTwoValue -> {
});
тогда вы можете иметь метод Observable<ObsTwoValue> observableTwo(ObsOneValue obsOneValue)
который создаст наблюдаемые два на основе наблюдаемых выбросов.