项目反应堆。 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
采用 Function
将 T
类型的值转换为 另一个 R
类型的值。因此,该转换是命令式和同步完成的(例如,将 String
转换为 URL
实例)。
flatMap
的另一个微妙之处在于运算符订阅了生成的 Mono
,这与将相同的 Function
传递给 map
不同。
就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
采用 Function
将 T
类型的值转换为 另一个 R
类型的值。因此,该转换是命令式和同步完成的(例如,将 String
转换为 URL
实例)。
flatMap
的另一个微妙之处在于运算符订阅了生成的 Mono
,这与将相同的 Function
传递给 map
不同。