与使用Kotlin和rx java CombineTest的表单验证混淆
所以我想使用rx-java2进行表单验证。我在用科特林。我遇到了两个问题。emailObservable和passwordObservable都属于与使用Kotlin和rx java CombineTest的表单验证混淆,kotlin,rx-java,rx-java2,rx-android,rx-binding,Kotlin,Rx Java,Rx Java2,Rx Android,Rx Binding,所以我想使用rx-java2进行表单验证。我在用科特林。我遇到了两个问题。emailObservable和passwordObservable都属于一次性类型。我试图通过调用val-emailObservable:Observable来指定类型,但Android Studio认为它是可丢弃的 其次,当我想使用方法combineLatest时,我得到了一个错误:使用提供的参数无法调用以下函数 emailObservable和passwordObservable都能正常工作。 我是RXJava新手,
一次性类型代码>。我试图通过调用val-emailObservable:Observable
来指定类型,但Android Studio认为它是可丢弃的代码>
其次,当我想使用方法combineLatest
时,我得到了一个错误:使用提供的参数无法调用以下函数
emailObservable和passwordObservable都能正常工作。
我是RXJava新手,对这种类型的东西感到困惑
val emailObservable = RxTextView.afterTextChangeEvents(textEmail)
.observeOn(AndroidSchedulers.mainThread())
.map { x -> textEmail.text.length > 3 }
.subscribe { x -> foo(x) }
val passwordObservable =RxTextView.afterTextChangeEvents(textPassword)
.observeOn(AndroidSchedulers.mainThread())
.map { x -> textPassword.text.length > 5 }
.subscribe { x -> foo(x) }
Observable.combineLatest(emailObservable,
passwordObservable,
BiFunction { x: Boolean, y:Boolean -> x && y })
实际上,编译器/IDE是正确的。subscribe
方法在可观察的
上被调用,并返回一个一次性的
,也就是说,您可以在可观察的
完成之前使用它取消订阅(类似于“取消”)
然后,combinelateest
方法期望在您提供2个Disposable
s时使用2个Observable
s调用。
要解决此问题,不应直接在链中调用subscribe
,而应根据combinelateest
的结果调用
例如:
fun main(args: Array<String>) {
val first = Observable.intervalRange(1, 10, 0, 2, TimeUnit.SECONDS)
val second = Observable.intervalRange(10, 20, 0, 1, TimeUnit.SECONDS)
Observable.combineLatest(arrayOf(first, second)) {
"${it[0]} -> ${it[1]}"
}.blockingSubscribe() {
println(it)
}
}
实际上,编译器/IDE是正确的。subscribe
方法在可观察的
上被调用,并返回一个一次性的
,也就是说,您可以在可观察的
完成之前使用它取消订阅(类似于“取消”)
然后,combinelateest
方法期望在您提供2个Disposable
s时使用2个Observable
s调用。
要解决此问题,不应直接在链中调用subscribe
,而应根据combinelateest
的结果调用
例如:
fun main(args: Array<String>) {
val first = Observable.intervalRange(1, 10, 0, 2, TimeUnit.SECONDS)
val second = Observable.intervalRange(10, 20, 0, 1, TimeUnit.SECONDS)
Observable.combineLatest(arrayOf(first, second)) {
"${it[0]} -> ${it[1]}"
}.blockingSubscribe() {
println(it)
}
}