2015-09-21 2 views
1

Как реализовать последовательный вызов веб-службы и запроса базы данных с использованием RxJava Observable? Первый вызов - это запрос базы данных (кэш), а затем вывод результата (onNext или onCompleted), а затем это сетевой вызов, а затем отображение (замена) текущего результата (кеш). Я использую Volley со слушателем для отображения данных.Последовательный наблюдаемый веб-сервис и запрос на запрос базы данных

ответ

1

Последовательные действия могут быть выполнены с использованием concat. Поскольку два каскадных Наблюдаемые могут быть различных типов ignoreElements и cast могут быть полезны:

databaseQueryObservable 
    .doOnNext(displayResult) 
    .doOnComplete(something) 
    .ignoreElements() 
    .cast(Object.class) 
    .concatWith(
     networkCall 
      .doOnNext(displayNetworkCallResult) 
      .doOnComplete(somethingElse) 
      .ignoreElements() 
      .cast(Object.class) 
    ).subscribe(onNextAction, onErrorAction, onCompletedAction); 
+0

Нужно ли мне Подписчик OnCompleted внутри databaseQueryObservable и NetworkCall? Можете ли вы привести мне пример? Также реализация абонента. Спасибо. – Marvs

+0

полностью зависит от вас. Я добавлю дополнительные призывы, чтобы вы делали все, что захотите. С точки зрения подписчика вы также можете сделать новый подписчик {} и внедрить необходимые методы по своему усмотрению (возможно, только для ведения журнала?). –

Смежные вопросы