Flux.map与Flux.flatMap进行1对1操作

时间:2017-10-08 18:35:39

标签: project-reactor

我不断看到使用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操作是同步的吗?我错过了什么用例?

1 个答案:

答案 0 :(得分:8)

我认为你不会错过任何一个。根据文档,当您需要在其中执行某些异步工作时,将使用flatMap。

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

从我注意到,如果你想将一个物体变成另一个物体就足够了。如果你想要额外的异步工作,请使用flatMap。