我正在使用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>
进行测试。
答案 0 :(得分:1)
我认为您需要执行以下操作:
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)
}