如何发出订阅结果
How to emit the result of a subscription
我有以下情况:
- 我正在使用 RxKotlin 扩展来检测我 activity
按钮中的点击
- 我正在使用 Room 在数据库中插入记录
这是我activity中相关的代码:
button.clicks()
.flatMap {
val list = mutableListOf<Answer>()
val date = Date()
list.add(Answer("some placeholder info"))
list.add(Answer("Another placeholder info"))
Observable.fromArray(list)
}
.map {
upsertStatusQuestionsViewModel.insertMultipleAnswers(it)
}.subscribe {
// it here is an object Maybe<Answer>
}
这是 ViewModel 的代码:
fun insertMultipleAnswers(answers: List<Answer>) = database.answerDao()
.createMultiple(answers.toList())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
我想显示一些有关插入数据库的答案的信息,因此,我需要在我的订阅中获取 Answer 对象。但是,我不知道我可以使用哪个运算符来实现订阅中的 it 对象是 class 答案,而不是 Maybe<Answer>
.
非常感谢您的帮助!
如果有人遇到这个问题,解决方案是将 Maybe 解析为 Observable,因为 Observable 实现了 ObservableSource,所以我的代码现在是这样的:
upsert_status_questions_confirm.clicks()
.map {
val list = mutableListOf<Answer>()
list.add(Answer("Some placeholder"))
list.add(Answer("Another placeholder"))
list
}.flatMap {
upsertStatusQuestionsViewModel.insertMultipleAnswers(*it.toTypedArray())
}.subscribe({
// Success...
}, {
// Error...
})
在 ViewModel 中:
fun insertMultipleAnswers(vararg answers: Answer) = database.answerDao()
.createMultiple(answers.toList())
.toObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
我有以下情况:
- 我正在使用 RxKotlin 扩展来检测我 activity 按钮中的点击
- 我正在使用 Room 在数据库中插入记录
这是我activity中相关的代码:
button.clicks()
.flatMap {
val list = mutableListOf<Answer>()
val date = Date()
list.add(Answer("some placeholder info"))
list.add(Answer("Another placeholder info"))
Observable.fromArray(list)
}
.map {
upsertStatusQuestionsViewModel.insertMultipleAnswers(it)
}.subscribe {
// it here is an object Maybe<Answer>
}
这是 ViewModel 的代码:
fun insertMultipleAnswers(answers: List<Answer>) = database.answerDao()
.createMultiple(answers.toList())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
我想显示一些有关插入数据库的答案的信息,因此,我需要在我的订阅中获取 Answer 对象。但是,我不知道我可以使用哪个运算符来实现订阅中的 it 对象是 class 答案,而不是 Maybe<Answer>
.
非常感谢您的帮助!
如果有人遇到这个问题,解决方案是将 Maybe 解析为 Observable,因为 Observable 实现了 ObservableSource,所以我的代码现在是这样的:
upsert_status_questions_confirm.clicks()
.map {
val list = mutableListOf<Answer>()
list.add(Answer("Some placeholder"))
list.add(Answer("Another placeholder"))
list
}.flatMap {
upsertStatusQuestionsViewModel.insertMultipleAnswers(*it.toTypedArray())
}.subscribe({
// Success...
}, {
// Error...
})
在 ViewModel 中:
fun insertMultipleAnswers(vararg answers: Answer) = database.answerDao()
.createMultiple(answers.toList())
.toObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())