Giu*_*aço 8 project-reactor reactive-streams spring-webflux
我有一个 Flux 和 Mono,我不确定如何将它们组合起来,以便在 Flux 的每个项目中都有单声道值。
我正在尝试这种方法,但它不起作用:
Mono<String> mono1 = Mono.just("x");
Flux<String> flux1 = Flux.just("{1}", "{2}", "{3}", "{4}");
Flux.zip(mono1, flux1, (itemMono1, itemFlux1) -> "-[" + itemFlux1 + itemMono1 + "]-").subscribe(System.out::println);
The outcome that I'm getting is -[{1}x]-
How could I combine them in order to get -[{1}x, {2}x, {3}x, {4}x]-?
Run Code Online (Sandbox Code Playgroud)
Kon*_*nko 10
虽然 Kevin Hussey 的解决方案是正确的,但我认为最好采用另一种方式:
Mono<String> mono1 = Mono.just("x");
Flux<String> flux1 = Flux.just("{1}", "{2}", "{3}", "{4}");
mono1.flatMapMany(m -> flux1.map(x -> Tuples.of(x, m))).subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)
这样您就有 1 个订阅mono1,而不是为 的每个值创建一个flux1。有关Flux.flatMap()方法,请参阅文档中的大理石图。
正如 Alan Sereb 所建议的,我正在使用元组。
Zip 寻找成对将它们加在一起,你的逻辑看起来改变了通量的值。
Mono<String> mono1 = Mono.just("x");
Flux<String> flux1 = Flux.just("{1}", "{2}", "{3}", "{4}");
flux1.flatMap(x -> mono1.map(m -> x+m)).subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7349 次 |
| 最近记录: |