android - 如何等到完成一个呼叫列表来呼叫以下呼叫
问题描述
我正在使用rxJava
,我想做forEach
一个列表,为每个项目打一个电话,然后一旦这些电话完成,再打电话给另一个。
这是我的代码
val flowableList = answerListCreated.map {
questionService.addAnswerToQuestion(
questionId,
it.id,
MyUtils.getAccessTokenFromLocalStorage(context = mContext!!)
)
}
disposable = Flowable.concat(flowableList)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
addCorrectsAnswersToQuestion(questionId)
}
但它加入了subscribe
两次,它应该加入一次订阅。
我错过了什么?我认为 concat 应该是一个不错的选择,因为我已经读过它首先执行第一项工作,然后在 job1 完成后启动 job2。
好吧,如果有必要,我也可以返回Observable<T>
,从现在开始,我将返回Flowable<T>
以进行测试。
解决方案
我认为您需要执行以下操作:
val disposable = Flowable.fromArray(answerListCreated)
.flatMap {
questionService.addAnswerToQuestion(
questionId,
it.id,
MyUtils.getAccessTokenFromLocalStorage(context = mContext!!)
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}
.toList()
.subscribe {
addCorrectsAnswersToQuestion(questionId)
}
推荐阅读
- android - 在准确的时间使用 Job Scheduler 执行后台任务
- javascript - 通过 iframe 获取和打印 PDF 文件会产生白页
- php - 使用 cron-job 更新 WordPress 发布帖子的日期
- javascript - 静态快递不提供简单的html页面
- sign-in-with-apple - 您是否需要 App 才能在网站上使用 Sign in with Apple?
- google-cloud-platform - FUSE 映射到 Google Persistent Disks
- java - 我无法将我的 Android 应用程序安装到我的手机上
- spring - 使用 mssql 服务器依赖部署 Spring Boot 应用程序时出现 Wildfly 错误
- python - 如何正确设置数据验证?
- python - Odoo 8:如何将上下文发送到 python 方法?