3
好吧,所以我在一个项目上工作,我需要从服务器获取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; }
解释操作链(这是一个例子)
- 得到所有汽车的ID(网络CALL1)
- 每节车厢号,找到真正的汽车
- GET汽车模型从汽车id(网络call2)
- 汽车模型更新视图
- 获取所有汽车ID(网络call3)
- 每节车厢号,找到卡车从车ID
- GET卡车模型(网络call4)与卡车模型
- 更新视图
因此,网络CALL1和网络呼叫3是相同的,所以我应该重用它们,这意味着,我应该只调用一次并保存数据。这就是为什么上面的Rx运算符链。
我的问题是,有没有什么办法达到同样的效果,但是通过缓存网络call1而不是这个可怕的不可读的运营商链?
我不明白高速缓存如何工作,我该如何将此操作符应用于此场景?
快速的问题,如果这条线:在第一行之后被称为几秒/分钟 – clu