kotlin - 使用 RxJava 使用不同的参数多次重复请求
问题描述
我需要逐页从服务器加载一些数据,直到所有数据都加载完毕。如果在某些时候我收到的项目少于我请求的项目,则认为数据已完全加载。这是我现在拥有的工作解决方案:
return Observable.fromCallable { 0 }
.delay(500, TimeUnit.MILLISECONDS)
.repeat()
.scan { previousPage, _ -> previousPage + 1}
.concatMap { doLongFetch(it) }
.takeUntil { it.size < 100 }
fun doLongFetch(page: Int): Observable<List<ListItem>>() {
//Here I do the loading
}
但是,源 observable 存在问题。如您所见,它每 500 毫秒发出一次新值,以为扫描功能提供一些输入。延迟是必需的,否则它会在很短的时间内发出数千个值,这根本不需要。理想情况下,我想完全消除这种延迟,并确保源 observable 仅在下游处理了前一个值之后才发出另一个值(这意味着数据已被请求和处理)。
关于我如何做到这一点的任何想法?
解决方案
推荐阅读
- scala - Scala 将 Json 读取为 Map[String,T]
- c - 无法获得点积 C 编程的结果
- javascript - 在 JavaScript 中使用 class/id 编辑 innerHtml 不起作用
- java - 在 Windows 的 Sublime Text 上运行 Java
- numpy - 内存泄漏(cython + numpy)
- apache-kafka - 阿帕奇卡夫卡状态存储
- java - 打印在 Java 中导致空指针异常的对象(或源代码)的类
- reactjs - 反应 onDrop 不只触发 onDragOver 和 onDragLeave
- javascript - 我如何在 Javascript 上显示对象
- python - 如果列表中没有,则显示/隐藏字段