Хорошо, поэтому я работаю над проектом, и мне нужно получить Json с сервера, получить соответствующие POJO, заполнить некоторые виды и завершить.Сетевые вызовы кэшей RxJava
Проблема, с которой я столкнулся, заключается в том, что мне нужно гнездо сетевых вызовов, чтобы получить последние данные, которые мне нужны. И чтобы минимизировать сетевые вызовы, я должен их повторно использовать, и это приводит к действительно сложным цепям RxOperator. Например:
getCarId() // network call
.flatMap(carIdObj -> getCarModelById(carIdObj)
.doOnNext(... update car views)
.flatMap(carModelObj -> { return carIdObj;}
.flatMap(carIdObj --> getTruckModelById(carIdObj)
.doOnNext(... update truck views)
.flatMamp(truckModelObj -> { return carIdObj; }
Разъяснение цепей оператора (это пример)
- получить все машины IdS (сеть call1)
- для каждого автомобиля ид, найти реальные автомобили
- прибудете модель автомобиля с идентификатора автомобиля (номер телефона2)
- обновленный вид с автомобилем модель
- получить все идентификаторы автомобиля (сетевой вызов3)
- для каждого автомобиля ид, найти грузовики
- ПОЛУЧИТЬ грузовик модель из автомобиля ид (сеть call4) вид
- обновление с моделью грузовика
Таким образом, сеть call1 и вызовов сети 3 являются одинаковыми, так я должен их повторно использовать, а это значит, я должен просто вызвать его один раз и сохранить данные. Вот почему цепи Rx-Operator выше.
Мой вопрос в том, есть ли способ сделать то же самое, но кешированием сетевого вызова1 вместо этой ужасной нечитаемой цепи оператора?
Я не понимаю, как работает кеш, как я могу применить этот оператор к этому сценарию?
Быстрый вопрос, что если эта строка: называется несколько секунд/мин после первой строки – clu