Как ждать, пока один список звонков не будет сделан, чтобы позвонить следующим - PullRequest
0 голосов
/ 19 марта 2019

Я использую 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 должен быть хорошим вариантом, потому что я прочитал, что сначала он выполняет первое задание, а затем, когда задание завершено, запускает задание 2.

Хорошо, также, если необходимо, я могу вернуть Observable<T>,с этого момента в моем сервисе я возвращаю Flowable<T>, чтобы проверить это.

1 Ответ

1 голос
/ 19 марта 2019

Я думаю, вам нужно сделать что-то вроде:

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)
    }
...