项目反应堆。 Mono.map() 对比 Mono.flatMap()

Project Reactor. Mono.map() vs Mono.flatMap()

Mono而言,它们之间的主要区别是什么? 从文档中,我读到 flatMap 是异步的,map 是同步的。但这对我来说并没有真正意义 b/c Mono 完全是关于并行性的,这一点是不可理解的。有人可以用更容易理解的方式重新表述吗?

然后在 flatMap 的文档中说明 (https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html#flatMap-java.util.function.Function-):

Transform the item emitted by this Mono asynchronously, returning the 
value emitted by another Mono (possibly changing the value type).

这里指的是哪个 Mono?

Mono#flatMap 采用 Function 将一个值转换为另一个 Mono。 Mono 可以表示一些异步处理,例如 HTTP 请求。

另一方面,Mono#map 采用 FunctionT 类型的值转换为 另一个 R 类型的值。因此,该转换是命令式和同步完成的(例如,将 String 转换为 URL 实例)。

flatMap 的另一个微妙之处在于运算符订阅了生成的 Mono,这与将相同的 Function 传递给 map 不同。