为什么我不能在 Flux 启动后使用 concatWith

Why can't I use concatWith after Flux initiation

我是新手,正在学习 Spring Flux。我无法理解以下内容:此处正在打印西瓜:

Flux<String> fruitFlux = Flux.just("Apple", "Banana", "Orange").concatWith(Flux.just("Watermelon"));
fruitFlux.subscribe( System.out::println);

但是当使用下面的代码时,它没有被打印出来:

Flux<String> fruitFlux = Flux.just("Apple", "Banana", "Orange");
fruitFlux.concatWith(Flux.just("Watermelon"));
fruitFlux.subscribe( System.out::println);

这两个代码块不应该完全一样吗?

否 - Flux 是不可变的,concatWith return 等运算符会相应修改 Flux 的新实例。他们不会改变原始发布者。

在你的第二个例子中,你忽略了那个新实例,所以它不会有任何效果。

如果您改为 fruitFlux = fruitFlux.concatWith(Flux.just("Watermelon"));,那么您会看到预期的结果。