RxJava2 - как наблюдать за уже инициализированной пустой наблюдаемой при ее изменении? - PullRequest
0 голосов
/ 23 января 2019

так что у меня есть Сингл, который уже был инициализирован как член класса.он инициализируется следующим образом:

var myObservable: Single = Observable.empty (). toSingle ()

это определяется как член класса.

Впоследствии, позже, после того, как класс уже инициализирован, я наконец получаю фактический ответ, и я хочу, чтобы этот myObservable теперь был ответом:

  private fun callback(response:Response) {
                myObservable= Single.just(response)//now look, myObservable got changed, but im watching it in the zipWith call. how can i tell zip to watch this one now instead of the empty one i initialized ?


            }

, но проблема в том, что яЯ заархивирую два obervable в самом начале вызова класса (и один из них myObservable), и я пытаюсь выслушать изменения в обоих и предпринять действия.вот функция zipWith:

  someApi.fetchOrders(orderNumber).zipWith<MyResponse,Pair<OrdersResponse,MyResponse>>(myObservable) { t1, t2 ->Pair(t1,t2)}

, но я вызвал это, когда myObservable был еще инициализирован, чтобы опустошить.позже, когда я получил ответ, я изменил его, но на самом деле я присвоил наблюдаемому новое ЗНАЧЕНИЕ, я не сохранил того же, которое наблюдал в почтовом индексе.Как я могу ОБНОВИТЬ myObservable, но сохранить ту же ссылку, которую наблюдает zipWith?

я попытался изменить myObservable на тему, а затем, когда я заархивировал его, он выглядит следующим образом:

someApi.fetchOrders (orderNumber) .zipWith> (myObservable.toSingle ()) {t1,t2 -> Pair (t1, t2)}

, но никогда не выполняет лямбда-функцию.

1 Ответ

0 голосов
/ 23 января 2019

zipWith испускает, когда и для Observables испускаются, и пары элементов с одинаковым индексом.Ваша тема, вероятно, испускалась, когда fetchOrders нет, поэтому zipWith ничего не делал.Вы можете использовать тему и изменить zipWith на subject.withLatestFrom(someApi.fetchOrders()).Как только вы что-то нажмете на объект, withLatestFrom издаст с последним значением от fetchOrders().

...