gpt4 book ai didi

kotlin - RxJava 也许是 : Any neat way to handle Empty case?

转载 作者:行者123 更新时间:2023-12-01 09:45:05 24 4
gpt4 key购买 nike

我被困在这个问题上,这应该很简单。我需要订阅者在 Maybe 时执行代码块已完成为 Empty Maybe .我找到

  • 我们可以传递默认的 Maybe 值或使用 switchIfEmpty 但我觉得两者都很老套。
  • 还有一个订阅函数,它接受 onComplete 函数(以及其他两个事件的处理程序),但 onComplete 不接受任何可用于查找是否可能已完成空的参数。
  • 另一种方式可能是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")})

    有人可以建议更简洁的方法来解决这个问题吗?

    最佳答案

    使用Maybe.doOnEvent (Java 示例):

    Maybe
    .empty()
    .doOnEvent((value, error)-> {
    if (value==null && error == null) {
    System.out.println("empty!");
    }})
    .subscribe();

    关于kotlin - RxJava 也许是 : Any neat way to handle Empty case?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50724513/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com