android - 如何使用 RxJava2 和 Retrofit 顺序执行 n 次调用
问题描述
所以以下场景:我有一个带有 fe id 的动态数组列表。我想为这个列表中的每个 id 做一个对 api 的请求。仅当前一个请求得到成功回答时,才应启动以下请求。所以没有要求。有没有什么漂亮的方法可以通过改造和 rxjava 来接收它。
我有一个具有递归函数的解决方案:
foo(int position, List<Int> idList, ApiController controller){
if(idList.size() < position){
//execute finish
}else{
controller.postRequest().subscribe(()->{
//Request finish. Do next request...
foo(++position, idList, controller);});
}
有没有办法用 rxjava2 漂亮地做到这一点?
我刚刚为 rxjava2 提出了一个异步解决方案:(这对我来说看起来不错,但并不能完全完成工作......
Observable.fromIterable(idList).flatMapCompletable(id -> {
controller.doRequests();})
.subscribe(()->{
//Finished all requests. Do stuff
});
解决方案
似乎用 concatMapCompletable 替换 flatMapCompletable 正在完成这项工作。
Observable.fromIterable(idList).concatMapCompletable(id -> {
controller.doRequests();})
.subscribe(()->{
//Finished all requests. Do stuff
});
推荐阅读
- audio - 通过浏览器播放的音频的真实持续时间
- reactjs - 如何使用反应测试库为 Material-ui 中的选项卡编写测试用例
- grafana - Grafana 表向下钻取动态链接
- python-3.x - 重命名和就地问题
- javascript - 将 eventlistner 添加到 SVG 条形图
- excel - Powerpivot 从表 2 的数据范围中检索基值以将其作为列添加到表 1
- python - Python:使用 venv 时,如何包含我在 venv 之外安装的包?
- php - PHP单元测试不兼容PHP8,是否支持向后兼容?
- hadoop - 如何计算hdfs中按日期分组的文件数
- javascript - 从 html 和 javascript 中删除选择元素