gpt4 book ai didi

android - 如何等到一堆电话结束再打一个电话

转载 作者:行者123 更新时间:2023-11-29 23:16:53 25 4
gpt4 key购买 nike

我正在使用 RxJava 并且我知道 concat,我想它确实适合我,因为我想先完成所有的第一次调用然后再做第二个,但我不知道如何实现。

我现在有这个:

private fun assignAllAnswersToQuestion(questionId: Long) {

answerListCreated.forEach { assignAnswerToQuestion(questionId, it.id) }

}

private fun assignAnswerToQuestion(questionId: Long, answerId: Long) {
disposable = questionService.addAnswerToQuestion(questionId,answerId,MyUtils.getAccessTokenFromLocalStorage(context = this))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
result -> //Do nothing it should call the next one

},
{ error -> toast(error.message.toString())}
)
}

但是,一旦完成所有这些forEach,我想做这样的事情:

private fun assignAllAnswersToQuestion(questionId: Long) {

answerListCreated.forEach { assignAnswerToQuestion(questionId, it.id)
anotherCallHere(questionId) //Do it when the first forEach is finished!!

}

有什么想法吗?

此外,是否可以使用协程来实现这一点?

最佳答案

我认为你必须.map你的列表(answerListCreated)到Flowable的列表,然后使用Flowable .zip 在此列表中。
zip 用于将 Flowable 的结果组合成一个结果。由于您不需要这些结果,我们将忽略它们。
zip 之后你确定所有之前的 Flowable 都结束了,你可以 .flatMap 执行你的下一个调用(假设 anotherCallHere 返回一个 Flowable

最后,它会是这样的:

val flowableList = answerListCreated.map { assignAnswerToQuestion(questionId, it.id) }

disposable = Flowable.zip(flowableList) { /* Ignoring results */ }
.flatMap { anotherCallHere(questionId) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
// ...
}

需要注意的是,如果任何调用失败,整个链都会失败(onError 将被调用)。

关于android - 如何等到一堆电话结束再打一个电话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55170980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com