java - 按顺序发出多个具有不同请求主体的 API 请求
问题描述
用例:我需要使用 android 客户端(改造)在服务器中发送一些请求。在我得到第一个答案后,我需要更新发送对象的值(取决于我得到的最后一项)并重新发送它,直到所有数据都下载完毕。我想知道如何使用 Retrofit 和 RxJava 来实现这一点(我不想使用 while 循环等)
编辑:问题是,我不知道“平面地图”的确切数量,因为数据可能会变大或变小。我有 420000 条记录,每个请求我下载 1000 条数据
解决方案
你可以flatMap
他们,并在下一个中使用它的响应,通过使用it
参数,这是前一个的响应。
mathApi.multiplyByTwo(1)
.flatMap {
mathApi.multiplyByTwo(it)
}.flatMap {
mathApi.multiplyByTwo(it)
}.subscribe {
// here "it" will be 4 (1*2*2)
}
如果您不知道最终将拥有多少flatMap
个 s,例如,您可以使用递归函数来完成。
private fun multiplyByTwo(number: Int) {
mathApi.multiplyByTwo(number).subscribe {
if (it < Integer.MAX_VALUE) { // When you run out of data.
multiplyByTwo(it)
}
}
}
推荐阅读
- ruby - delete_if 方法在 Ruby 中如何工作?
- pine-script - Pine Script:如何获取特定时间的 OHLC 数据?
- sorting - 如何在列表视图颤动中使用排序功能
- kotlin - 如何覆盖 Kotlin 的 null 安全性以创建错误的测试请求?
- java - 类中的 Java 正则表达式匹配类
- c# - 如何使用 SQLiteNet-Extensions 对具有外键的表执行 CRUD 操作
- botframework - Microsoft Bot Framework 403 BotDisabledByAdmin
- nlp - 如何在pytorch中用RNNCell编写RNN?
- flutter - 如何重用模型作为父级
- phpstorm - PhpStorm 无法识别 xdebug.remote_enable