Сегодня продолжу тему #советы



Задача

Есть два источника одних и тех же объектов. Например, база данных и сервер.

Данные, получаются из кэша БД быстрее, чем с сервера. Но актуальная информация на сервере. Хотим показать пользователю данные с кэша, а потом после прихода информации с сервера показать их.



Решение

Одним из рабочих вариантов - создание PublishSubject, который подписывается на изменение данных, и в который попадает информация из каждого Observable.

Если не использовать Rx, то решение становится огромным куском кода.

В качестве альтернативы хочу предложить оператор Observable.concatEager(observables). Он принимает список Observable, который включает в себя получение данных из кэша и из сети. В результате получение будет запущенно параллельно, и вернутся данные из кэша, затем из сети. Важно помнить о порядке входящих источников.



Читайте подробнее об операторе и изучайте исходный код.