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并返回。