我有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