如何将 RxJava2 combineLatest 与 Kotlin 中的可观察对象列表一起使用
How to use RxJava2 combineLatest with a list of observables in Kotlin
我知道如何在 中执行此操作。
而且我知道 如何帮助解决类似问题。
但是 RxKotlin.Observables 似乎没有这个用于列表重载的辅助函数,我无法弄清楚。你会怎么做?
RxJava 中的大多数静态函数都是 RxKotlin 中的扩展函数。此特定功能是 Iterable<Observable<T>>
的扩展。你可以这样称呼它:
listOfObservables.combineLatest { ... }
val list = Arrays.asList(Observable.just(1), Observable.just("2"))
Observable.combineLatest(list, object : FuncN<String>() {
fun call(vararg args: Any): String {
var concat = ""
for (value in args) {
if (value is Int) {
concat += value
} else if (value is String) {
concat += value
}
}
return concat
}
})
Observable.just(1), Observable.just("2") 可以用 observable 列表替换,调用 fun 中的登录也将根据要求更改。
对于 RxJava 2,这可以通过这种方式完成
val list = Arrays.asList(
remoteRepository.getHospitals(),
remoteRepository.getQuestionCategories(),
remoteRepository.getQuestions(),
)
return Observable.combineLatest(list) {
val hospitals = it[0] as List<Hospital>
val questionCategories = it[1] as List<QuestionCategory>
val questions = it[2] as List<Question>
localRepository.insertHospitals(hospitals)
localRepository.insertQuestionCategories(questionCategories)
localRepository.insertQuestions(questions)
if (hospitals.isNotEmpty())
Constants.STATUS_OK
else
Constants.STATUS_ERROR
}
我知道如何在
而且我知道
但是 RxKotlin.Observables 似乎没有这个用于列表重载的辅助函数,我无法弄清楚。你会怎么做?
RxJava 中的大多数静态函数都是 RxKotlin 中的扩展函数。此特定功能是 Iterable<Observable<T>>
的扩展。你可以这样称呼它:
listOfObservables.combineLatest { ... }
val list = Arrays.asList(Observable.just(1), Observable.just("2"))
Observable.combineLatest(list, object : FuncN<String>() {
fun call(vararg args: Any): String {
var concat = ""
for (value in args) {
if (value is Int) {
concat += value
} else if (value is String) {
concat += value
}
}
return concat
}
})
Observable.just(1), Observable.just("2") 可以用 observable 列表替换,调用 fun 中的登录也将根据要求更改。
对于 RxJava 2,这可以通过这种方式完成
val list = Arrays.asList(
remoteRepository.getHospitals(),
remoteRepository.getQuestionCategories(),
remoteRepository.getQuestions(),
)
return Observable.combineLatest(list) {
val hospitals = it[0] as List<Hospital>
val questionCategories = it[1] as List<QuestionCategory>
val questions = it[2] as List<Question>
localRepository.insertHospitals(hospitals)
localRepository.insertQuestionCategories(questionCategories)
localRepository.insertQuestions(questions)
if (hospitals.isNotEmpty())
Constants.STATUS_OK
else
Constants.STATUS_ERROR
}