代码之家  ›  专栏  ›  技术社区  ›  StuartDTO

如何等到一个调用列表完成后调用以下调用

  •  0
  • StuartDTO  · 技术社区  · 6 年前

    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 回复  |  直到 6 年前
        1
  •  1
  •   borichellow    6 年前

    我觉得你应该做些什么:

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