我被这个问题卡住了,这个问题应该很简单。我需要订阅者执行一个代码块时,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) })
}
但正如预期的那样,它运行了两次订阅,测试如下:
Maybe.create<Int> {
println("subscribing")
//Remove line below to create Empty Maybe
it.onSuccess(5)
it.onComplete()
}
.subscribeWithEmptyHandler({println("success")},{println("error")},{println("empty")})
有没有人能建议一下解决这个问题的更好的方法?
https://stackoverflow.com/questions/50724513
复制相似问题