将一个通量分成两个通量 - 头和尾

sul*_*man 6 java spring-boot project-reactor spring-webflux

我想将一个通量分成两个通量,其中第一个通量具有原始通量的第一个项目,第二个将采用其余项目。

myLogic对每个通量应用自定义转换后,我想将它们组合成一个通量,保留原始通量的顺序。

例子:

S:学生
S':申请后的学生myLogic

发射通量: s1 -> s2 -> s3 -> s4
第一个分裂通量: s1' => myLogic
第二个分裂通量:s2' -> s3' -> s4' => myLogic
组合通量: s1' -> s2' -> s3' -> s4'

Mic*_*rry 0

您无需创建两个单独的Flux对象然后合并它们,只需将原始对象FluxFlux<Boolean>仅位于true第一个元素上的另一个对象压缩即可。

然后,您可以在正常调用中根据需要进行有条件的处理,map()而无需稍后合并单独的发布者:

Flux<String> values = Flux.just("A", "B", "C", "D", "E", "F", "G");

Flux.zip(Flux.concat(Flux.just(true), Flux.just(false).repeat()), values)
        .map(x -> x.getT1() ? "_"+x.getT2().toUpperCase()+"_" : x.getT2().toLowerCase())
        .subscribe(System.out::print);    // prints "_A_bcdefg"
Run Code Online (Sandbox Code Playgroud)