spring-boot - 为什么 Flux 启动后不能使用 concatWith

标签 spring-boot spring-webflux project-reactor

我是新手,正在学习 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/

相关文章:

spring - 如何返回我的自定义 json 文件而不是生成 Spring Boot 的默认 json 文件?

java - 如何将 spring boot 参数传递给 tomcat 部署?

spring-webflux - WebFlux + RSocket + Spring

spring - 使用 Spring WebClient 解码内容编码 gzip

java - Spring Boot 响应式(Reactive)和 mongodb 'command insert requires authentication'

java - 如何对单声道列表进行一一处理?

java - Spring Boot - Thymeleaf 和 Json 模板

java - 如何将表转换为Spring Data实体?

spring-boot - 响应式(Reactive) Elasticsearch 和分页

java - 如何使响应式@WebFilter与@RequestBody正常工作?