combineLatest操作会把所有源中最新产生的元素合并成一个新元素下发。只要其中任何一个源中产生了新元素,合并操作就会执行一次,然后下发新产生的元素。如下图所示:
Demo:
Flux.combineLatest(
Flux.interval(Duration.ofMillis(50), Duration.ofMillis(100)).map(x -> "a"+x).take(5),
Flux.interval(Duration.ZERO, Duration.ofMillis(100)).map(x -> "b"+x).take(5),
(s,f) -> s + " : " + f
).subscribe(System.out::println);
Thread.sleep(1000*2l);
执行结果:
a0 : b0
a0 : b1
a1 : b1
a1 : b2
a2 : b2
a2 : b3
a3 : b3
a3 : b4
a4 : b4