当前位置: 首页 > 知识库问答 >
问题:

如何在if-else场景中链接反应性Mono

高兴贤
2023-03-14

这里是被动Java的新手。有人能帮我完成这个简单的场景吗(用Kotlin编写):

    fun testReactive(): Int {
      Mono.just("item-exists-in-database")
        .onErrorReturn("item-missing") // if item is not in database an exception will be thrown
        .map { item ->
            if (item == "item-exists-in-database") {
                Mono.just("deleting")
                    .doOnSuccess { println("deleting item") } // <-- this never prints!
            } else {
                Mono.just("ok")
            }
        }.map {
            println("Creating item in database")
            Mono.just("creating item in database")
        }.block()
      return 0
}

运行它会产生:

在数据库中创建项目

为什么不打印“删除项目”一行?

共有1个答案

田慈
2023-03-14

你可以考虑开关空运算符https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html#switchIfEmpty-reactor.core.publisher.Mono-

 类似资料:
  • 问题内容: 使用以下Java代码段: 我想知道的是编译器如何处理这个问题。即使编译器将其硬编码为true,但为了不必执行检查而完全删除该语句,这是否合乎逻辑呢?特别是在Eclipse中,上面的代码如何解释? 或者在以下情况下如何: 在这种情况下,编译器删除该语句是否合乎逻辑?因为在运行时,该语句不可访问。 问题答案: Java中禁止使用无法访问的语句,并且这些语句必须触发编译错误。JLS定义了什么

  • 问题内容: 我的任务是处理一些代码,并且有一个巨大的if-else-if链(超过100个else-ifs)检查Strings。 有什么好的技术可以更新此代码,以便将if-else-if链压缩到更易于管理的位置。 链看起来像这样: 问题答案: 您可以将每个分支中的代码提取到一个单独的方法中,然后将这些方法转换为公共基本接口的实现(我们称之为)。之后,您可以填充一个,然后查找并为给定的字符串执行正确的

  • null 这段代码似乎工作正常,并允许我处理admin guild命令,即由“权限级别”(最高角色级别)至少是我指定的一个的成员在我的Discord服务器的文本通道中发送的命令。 但是如何正确地(反应性地、好地)实现其余的命令呢?我在Reactor中没有找到类似if/else链接的东西,我也不想重复以上代码几次,只更改1-2行。

  • Perl条件语句有助于决策,这需要程序员指定一个或多个要由程序评估或测试的条件,以及在条件被确定为真时要执行的一个或多个语句,以及可选的其他条件如果确定条件为假,则执行语句。 以下是大多数编程语言中的典型决策结构的一般性 - 数字0,字符串'0'和“”,空列表()和undef在布尔上下文中都是false ,所有其他值都为true 。 否定真正的价值! 或not返回特殊的假值。 Perl编程语言提供

  • 本文向大家介绍C# if, if...else, if... else if ,包括了C# if, if...else, if... else if 的使用技巧和注意事项,需要的朋友参考一下 示例 该if语句用于控制程序的流程。一条if语句根据Boolean表达式的值标识要运行的语句。 对于单个语句,braces{}是可选的,但建议使用。 该if还可以有一个else条款,将在案件条件的计算结果来执

  • if语句之后可以跟一个可选的else if...else语句,这对于使用单个if ... else if语句测试各种条件非常有用。 当使用if...else if…else语句时,请记住 - 一个if可以有零个或一个else语句,它必须在任何其他if之后。 如果语句可以有零到多个if,它们必须在else之前。 一旦else if成功,其余的if或else语句都不会被测试。 if ... else