【发布时间】:2019-06-01 07:39:33
【问题描述】:
我想用 kotlin 尝试 RxJava 以使编码更容易,所以我制作了这个:
fun postAnswers() {
disposable = getToken.execute().subscribe({ token ->
questions.forEach { form ->
val answers = form.answers?.filter { it.isChecked }?.map { it.answer_id }
disposable = postAnswer.execute(token?.token!!, SavedAnswer(form.form_id, answers)).subscribe({
//Post live data about success
}, {
//Post live data failure
})
}
}, {
//Post live data failure
})
}
但我有一种印象,它可以做得更好,但我不知道怎么做。基本上我想要实现的是从数据库中获取一个 Token 对象,它返回 Flowable Token?然后用它在for循环中调用postAnswer,因为我需要分别发布每个答案(这就是API的设计方式)。之后,postAnswer 只返回 Completable,但我需要让 Activity 知道(这是来自 ViewModel 代码)发布了多少答案
我曾考虑过使用 .flatMap 或 .concat 函数,但我不确定它在这种情况下是否有用。另外,我需要将 getToken.execute() 分配给一次性吗?
感谢您的回答
编辑:
这是我的问题列表:
private var questions: List<Form> = emptyList()
它被 viewModel 函数填充
【问题讨论】:
-
你做错了,应该在单个 Rx 流中完成。
questions对象是什么?在此处复制您的课程或至少复制此处使用的所有对象,以提供更多信息以帮助您。 -
@DawidJamroży 抱歉,问题只是一个简单的对象列表,我已经编辑了我的问题
标签: kotlin retrofit rx-java android-room rx-kotlin