我是新手,正在学习 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
这样的运算符会返回相应修改的 Flux 的新实例。它们不会改变原始发布者。
在第二个示例中,您忽略了该新实例,因此它不会产生任何效果。
如果您改为 fruitFlux =fruitFlux.concatWith(Flux.just("Watermelon"));
,那么您会看到预期的结果。
关于spring-boot - 为什么 Flux 启动后不能使用 concatWith,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67516736/