#android #kotlin #observable #rx-java
#Android #kotlin #наблюдаемый #rx-java
Вопрос:
Я использую 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
дважды, и он должен присоединиться к subscribe один раз.
Чего мне не хватает? Я подумал, что concat должен быть хорошим вариантом, потому что я читал, что сначала выполняется первое задание, а затем, когда job1 завершено, запускается job2.
Ну, также при необходимости я могу вернуться Observable<T>
, с этого момента в моем сервисе я возвращаюсь Flowable<T>
, чтобы протестировать это.
Комментарии:
1. Используйте
map
для объединения наблюдаемых в цепочку
Ответ №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)
}