我有2個API,我想依次請求並將它們的數據存儲在SQLite中。Retrofit + RxJava中的鏈接請求
首先我要讓請求API A
和存儲在SQL表a
其數據。然後向API B
發送請求並將其數據存儲在表b
中,並將一些數據存儲在表a_b
中。存儲在a_b
中的數據僅來自請求B
。
我該如何使用RxJava來做到這一點。我在其他地方見過。如果我不使用lambda函數使用flatMap對於這一點,這樣的事情
apiService.A()
// store in DB here? How? maybe use map()?
.flatMap(modelA -> {
// or maybe store modelA in DB here?
return apiService.B().map(modelB -> {
storeInDB()l // store B here ?
return modelB;
});
});
,這看上去就像正常的嵌套調用一樣醜陋。這是更好的方式嗎?
我不知道Rx的運營商。閱讀完文檔後,是不是「doOnComplete」是一個更好的功能? – Sourabh
@Sourabh它取決於你的'Observable'。如果在從api成功調用之後調用'onComplete',那麼是的。如果你的'Observable'可以發出多個事件,那麼你應該去'doOnNext'。在你的情況下('Retrofit'),使用'doOnNext'和'doOnComplete'將會得到相同的結果,但'doOnComplete'可能會更直觀一些(我使用純粹習慣中的'doOnNext')。 –
我的意思是,用'doOnComplete',而不是'flatMap' – Sourabh