什么时候在Mono上使用.flatMap()而不是仅在值上调用函数?

时间:2019-06-17 18:44:45

标签: java spring reactive-programming project-reactor reactor

我正在查看在Mono上调用.flatMap的一些代码-我已经在Rx GitHub上进行了有关添加此类功能的PR讨论,但是我真的不明白为什么有人会这样做:对我而言,flatMap似乎固有地旨在将函数应用于1 ... n元素。可以通过单个函数调用将函数应用于0 ... 1元素。

1 个答案:

答案 0 :(得分:0)

只要.map()处于非阻塞状态,就可以使用。

否则,您的内部转换将返回Mono,该转换将在将来完成(例如,网络通话),并且您应使用.flatMap对其进行订阅,而不是阻塞处理。

flatMap可以与任何Publisher<T>一起使用,也可以与任何0..n也可以是n的{​​{1}}一起使用。

如果您需要将一个元素转换成几个元素(例如,拆分一个字符串),则可以使用0,它的开销要比flatMapIterable更低。