2017-10-08 78 views
1

我一直使用flatMap为1:1的操作,就像看到的例子:Flux.map VS Flux.flatMap了1对1的操作

Flux.just("a", "b", "c") 
    .flatMap(s -> Mono.just(s.toUpperCase()) 

的时候我本来期望

Flux.just("a", "b", "c") 
    .map(String::toUpperCase) 

(注:我知道,我没加一个用户,假设我打印出来或东西)

采用flatMap这里就是击败返回Mono,对不对?但为什么不使用如图所示的map操作?是因为map操作是同步的吗?我缺少什么用例?

回答

2

我不认为你错过了任何。根据文档,当您需要在其中完成一些异步工作时使用flatMap。

因此,您在这里使用的操作是简单的映射,因为您只需将一个对象转换为另一个(小写变成大写)。

从我注意到的,如果你想把一个对象转换成另一个地图就足够了。如果你想完成额外的异步工作,请使用flatMap。