Man*_*odi 7 kotlin rx-java rx-kotlin
我被困在这个问题上,这应该很简单。我需要订阅者在Maybe作为Empty Maybe. 我找到
Maybe.isEmpty.blockingGet(),但它也很脏。我尝试了以下(Kotlin 语法):-
fun <T> Maybe<T>.subscribeWithEmptyHandler(onSuccess: (T) -> Unit, onError: (Throwable) -> Unit, onEmpty: () -> Unit) {
this.isEmpty.subscribe({ if (it) onEmpty() }, { onError(it) })
this.subscribe({ onSuccess(it) }, { onError(it) })
}
Run Code Online (Sandbox Code Playgroud)
但正如预期的那样,它运行订阅两次,在这里测试:-
Maybe.create<Int> {
println("subscribing")
//Remove line below to create Empty Maybe
it.onSuccess(5)
it.onComplete()
}
.subscribeWithEmptyHandler({println("success")},{println("error")},{println("empty")})
Run Code Online (Sandbox Code Playgroud)
有人可以建议更简洁的方法来解决这个问题吗?
使用Maybe.doOnEvent(java示例):
Maybe
.empty()
.doOnEvent((value, error)-> {
if (value==null && error == null) {
System.out.println("empty!");
}})
.subscribe();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9367 次 |
| 最近记录: |