微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将所有元素组合成一个通量到单声道

如何解决将所有元素组合成一个通量到单声道

这是我面临的问题的简化示例。

Flux<String> fluxString = Flux.just("A","B","C");
Mono<String> monoString = Mono.just("Original");

预期的结果是这样

Mono<String> expectedresult = "Original A B C";

方法 1 -> 我可以等待接收到通量的所有元素,然后将它们与单声道结合

方法 2-> 将通量的每个元素组合为单声道,并在接收下一个通量元素之前用新值更新原始单声道。 以上哪种方法适合我?

我用以下代码尝试了方法 2

Flux<String> fluxfrommono = monoString.flatMapMany(a-> Mono.just(a).repeat());
Flux.zip(fluxfrommono,fluxString,(a,b)-> a+b)

但这会产生“原始 A”、“原始 B”、“原始 C”-> 原始字符串不会更新为每个通量元素的新值。

如何实现这一目标?

解决方法

您需要将 concatWithmonoString fluxString,并将其 reduceMono<String>

,

为我写的代码-

Flux<String> fluxString = Flux.just("A","B","C");
Mono<String> monoString = Mono.just("Original");
Mono<String> combinedString = fluxString.reduce((a,b)->a+b);
Mono<String> expectedresult = Mono.zip(monoString,combinedString,(a,b)->a+b);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。