我一直看到使用flatMap
进行一对一操作的示例,例如:
Flux.just("a", "b", "c")
.flatMap(s -> Mono.just(s.toUpperCase())
当我预料到的时候
Flux.just("a", "b", "c")
.map(String::toUpperCase)
(注意:我知道我没有添加订阅者;假设我打印了订阅者或其他内容)
这里使用flatMap
是平展返回的Mono
,对吧?但是,为什么不直接使用如图所示的map
操作呢?仅仅是因为map
操作是同步的吗?我缺少什么用例?
我认为你没有遗漏任何东西。根据文档,当您需要在其中完成一些异步工作时,将使用flatMap。
因此,您在此处使用的操作是简单的map,因为您所需要的只是将一个对象转换为另一个对象(小写变为大写)。
据我所知,如果您想将一个对象变成另一个地图就足够了。如果你想完成额外的异步工作,那就去flatMap。