我正在查看一些在 Mono 上调用 .flatMap 的代码 - 我已经浏览了 Rx GitHub 上关于添加此类功能的一些 PR 讨论,但我不太明白为什么有人会这样做:对我来说,flatMap 似乎本质上是为了将函数应用于 1...n 个元素。通过一次函数调用即可将函数应用于 0...1 个元素。
最佳答案
您可以使用.map()
只要它是非阻塞的。
否则,你内心的转变将会返回Mono
这将在将来完成(例如网络调用),您应该使用 .flatMap
订阅它而不是阻止处理。
flatMap
适用于任何 Publisher<T>
并适用于任何 0..n
哪里n
也可以是0
.
如果您需要将一个元素转换为几个元素(例如拆分字符串),那么您可以使用 flatMapIterable
,它的开销低于 flatMap
.
关于java - 何时在 Mono 上使用 .flatMap() 而不是仅仅对值调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56637142/