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

将多个Monos组合成一个通量

陈富
2023-03-14

我用平面图附加通量,但如果我添加其他平面图,则只返回最后一个平面图。

// Here is an example of the Mono function

private Mono<MyType> appendFirstMono(Group group) {
    return Mono.just(group)
    .map(MyType::new)
        .flatMap(g -> functionZ(group)
        .map(g::setField));
} 


//This works as expected

public Flux<MyType> function1() {

    return returnData(id)
            .thenMany(service.getData(id))
            .flatMap(this::appendFirstMono);
}

//This does not and only returns the last mono (3rd)

public Flux<MyType> function1() {

    return returnData(id)
            .thenMany(service.getData(id))
            .flatMap(this::appendFirstMono)
            .flatMap(this::appendSecondMono)
            .flatMap(this::appendThirdMono);
}

//I've attempted to fix with this... Doesn't work as expected.   

public Flux<MyType> function1() {

    return returnData(id)
            .thenMany(service.getData(id))
            .flatMap(x -> {
                return Flux.merge(
                    appendFirstMono(x),
                    appendSecondMono(x),
                    appendThirdMono(x)
                );
            });
}

我需要在通量上处理每个Mono函数,但我似乎无法让每个函数正确执行和返回。

共有1个答案

章增
2023-03-14

你可以试着用concat一个接一个地处理单声道,看看我的例子

        Flux.concat(getMono(0),getMono(1),getMono(2))
            .map(integer -> {
                System.out.println(integer);
                return integer;
            })
            .subscribe();

}

private Mono<Integer> getMono(Integer a) {
    return Mono.just(a)
            ;
}

这将打印0,1,2

 类似资料:
  • 谢谢,有用。但是我有什么办法可以去掉多余的“,”吗?这是由于列中存在空白值造成的。有没有一种方法可以不接受那些有空白值的列?它现在显示的是: 我多么想要它:

  • 我运行一个大型的minecraft服务器,minecraft服务器端是单线程的。一切都是在主游戏循环中完成的。如果Mojang使minecraft服务器端多线程化,minecraft服务器每年将节省200万美元,因为租用的硬件更少。 不管怎样,我听说过这些谣言和理论。我从来都无法用谷歌搜索并弄清楚。 有没有必要使用多核cpu,并将其转换为单核、单线程? 我一直在猜测虚拟机管理程序软件将运行多线程,

  • 问题内容: 我有一个有效的正则表达式: 我也有一个正则表达式: 但是我不知道如何将两者结合起来 我试过了,但实际上没有用… 如果重要的话,这就是Java正则表达式中的全部内容。 问题答案: 如果您想要匹配以或开头的序列的正则表达式,请尝试以下操作: 但是除了周围的两个空格字符外,您的正则表达式也应该与之匹配: 这两个正则表达式匹配同一组字符串。

  • 首先,我对反应式编程有点陌生。在参加了一些关于reactor和spring 5.0的演讲后,我想自己尝试一下这个编程模型。 我有一个应用程序,它使用WebClient从不同的API构建两个Flux对象。我想将这2个对象组合成一个并将其返回给用户。 代码示例如下所示: 现在在我的handler方法中: 我应该使用反应器API中的什么方法来实现这一点?我找到了一些方法来组合像组合最新的对象,但是在这种

  • 主要的问题是第五次会议的形式是什么