Reactor3 Map 与 FlatMap的区别

本文探讨了Reactor3中Mono和Flux的map()与flatMap()方法的区别。map()进行同步转换,而flatMap()则进行异步转换且能展开合并到新的流中。Mono的flatMap()实现动态绑定,Flux的flatMap()则会丢弃原始元素。
摘要由CSDN通过智能技术生成

Publisher Map 与 FlatMap的区别

环境信息:
JDK: Java 8
Reactor: Reactor 3.2.10.RELEASE

Gradle依赖:

compile group: 'io.projectreactor', name: 'reactor-core', version: '3.2.10.RELEASE'
compile 'ch.qos.logback:logback-classic:1.2.1'
testCompile 'io.projectreactor.addons:reactor-test'
testCompile 'junit:junit:4.12'

这几个代码的效果都一样,打印出11;

Mono.just("1").map(a -> a + "1").subscribe(System.out::println);
Mono.just("1").flatMap(a -> Mono.just(a + "1")).subscribe(System.out::println);
Flux.just("1").map(a -> a + "1").subscribe(System.out::println);
Flux.just("1").flatMap(a -> Flux.just(a + "1")).subscribe(System.out::println);

1 Mono

1.1 map()

Mono<String> monoMap = Mono.just("1").map(a -> a + "1");
monoMap.subscribe(System.out::println);

同步的转换发布的元素并返回。

1.2 flatMap()

Flux<String> monoFlatMap = Mono.just("1").flatMap(a -> Mono.just(a + "1"));
monoFlatMap.subscribe(System.out::println);

异步的转换发布的元素并返回一个新的Mono,被转换的元素和新Mono是动态绑定的。

2 Flux

2.1 map()

Mono<String> fluxMap = Flux.just("1").map(a -> a + "1");
fluxMap.subscribe(System.out::println);

同步的转换发布的元素并返回,转换完后被转换元素被丢弃。

2.2 flatMap()

Flux<String> fluxFlatMap = Flux.just("1").flatMap(a -> Flux.just(a + "1"));
fluxFlatMap.subscribe(System.out::println);

异步的转换发布的元素并他们展开合并到一个新的Flux并返回。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值