gpt4 book ai didi

android - Retrofit + RxJava 中的链接请求

转载 作者:IT王子 更新时间:2023-10-28 23:28:45 26 4
gpt4 key购买 nike

我有 2 个 API,我想按顺序发出请求并将它们的数据存储在 SQLite 中。

首先我想向 API A 发出请求并将其数据存储在 SQL 表 a 中。然后向 API B 发出请求,并将其数据存储在表 b 中,并将一些数据存储在表 a_b 中。 a_b 中存储的数据仅来自请求 B

如何使用 RxJava 做到这一点。我在某处读到了关于为此使用 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;
});
});

如果我不使用 lambda 函数,这看起来和普通的嵌套调用一样难看。这是更好的方法吗?

最佳答案

我不认为使用 map 运算符是处理诸如存储 api 调用结果之类的最佳方法。

我喜欢做的是在 doOnNext 运算符中分离这些东西。所以你的例子是这样的:

apiService.A()
.doOnNext(modelA -> db.store(modelA))
.flatMap(modelA -> apiService.B())
.doOnNext(modelB -> db.store(modelB));

(自己添加必要的observeOnsubscribeOn,就像你需要的一样)

关于android - Retrofit + RxJava 中的链接请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36785090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com