如何等待直到完成一个通话列表才能拨打以下电话

时间:2019-03-19 14:00:51

标签: android kotlin observable 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,并且应该加入了一次订阅。

我缺少什么?我认为concat应该是一个不错的选择,因为我已经读到它首先完成了第一项工作,然后在job1完成后就开始了job2。

好吧,如果有必要,我也可以返回Observable<T>,从现在开始,我将返回Flowable<T>进行测试。

1 个答案:

答案 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)
    }