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

Spring Webflux:嵌套平面图替代

籍靖
2023-03-14

我有一个场景,其中第二个单声道依赖于first stMono和ThridMono调用依赖于第二个单声道输出。

我写的代码如下。

  firstMono.flatMap{

    val secondMono = callWebservice(firstMono)

    val thrirdMono = secondMono.flatMap { secondMonoResponse ->
        if (secondMonoResponse.getName.equals("ABC")) {
            callAnotherWebService(secondMon)
        } else {
            secondMono
        }
    }
}

我怎样才能避免这里的第二个平面图?。有没有办法在没有嵌套平面图的情况下做到这一点。我应该只在满足条件的情况下调用serrdMono。

共有1个答案

公冶京
2023-03-14

答案可能会有所不同,具体取决于每个Mono的确切性能。然而,当我查看代码片段时,我没有看到在第一个Mono上调用flatMap{}的意义,所以它可能看起来如下:

callWebservice(firstMono)
  .flatMap { secondMonoResponse ->
    if (secondMonoResponse.name == "ABC" ) {
      callAnotherWebService(secondMono)
    } else {
      secondMono
    }
  }

另一方面,这里也可以使用. zip方法:

val secondMono = callWebservice(firstMono)
Mono.zip(firstMono, callWebservice(firstMono))
  .flatMap { 
    val secondMonoResponse = it.t2
    if (secondMonoResponse.name == "ABC" ) {
      callAnotherWebService(secondMono)
    } else {
      secondMono
    }
  }

注意:我已经删除了val shirdMono,因为上面的代码片段不会编译,因为返回类型是Unit(而不是Mono)。

 类似资料:
  • 假设我有一个返回列表的博客帖子api 从列表创建可观察 将每个可观察拆分为

  • 我试图使用for理解以下内容: 我试过这个: 有没有办法用< code > for-comprehensive 简洁地写进去?

  • 所以目前我看到的是这样的: 这是我目前编写的Jolt规范(编辑): 以及转换后的输出: 任何帮助都是非常感谢的。

  • 问题内容: 我有一个嵌套与包含任何键,或值。我想像下面这样压扁它们。 数据如下: 地图看起来像: 地图的展平应如下所示: 注意: 嵌套数组或映射的级别未知,可能会超过2个级别。 问题答案: 您可以使用递归来展平。每次遇到a时,通过展平来递归; 当您遇到时,请对其进行迭代,然后将索引添加到当前键中。否则,可以简单地设置一个值。在行动中看到下面的代码在这里。

  • 我有一门java课 在上面的场景中,示例具有子示例,这又是示例列表。此嵌套可以是 n 级。我想实现的是有一个示例列表,即扁平化上面的对象并将所有示例收集到最终列表中(收集所有n级示例)。一个明显的方法是递归。在Java中有什么方法可以更有效地实现它。我尝试了一些java 8概念,但它们不符合要求。

  • 我正在寻找一种用函数式编程方法替换嵌套foreach循环的方法。情况是这样的: 目前我的代码是这样的: 这将生成如下所示的输出: 有谁知道如何用函数式编程替代方案替换foreach代码块?