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