小编rop*_*pes的帖子

Project Reactor 中的 flatMap、flatMapSequential 和 concatMap 有什么区别?

我从文档中读到flatMap

将此 Flux 发出的元素异步转换为 Publisher,然后通过合并将这些内部发布者扁平化为单个 Flux,从而允许它们交错。

flatMapSequential

将此 Flux 发出的元素异步转换为 Publishers,然后将这些内部发布者扁平化为单个 Flux,但按照源元素的顺序合并它们。

然后concatMap

将此 Flux 发出的元素异步转换为发布者,然后将这些内部发布者扁平化为单个 Flux,按顺序并使用串联保留顺序。该运算符有三个维度可以与 flatMap 和 flatMapSequential 进行比较:

内部函数的生成和订阅:该运算符等待一个内部函数完成,然后再生成下一个内部函数并订阅它。

展平值的排序:该运算符自然地保留与源元素相同的顺序,按顺序连接每个源元素的内部。

交错:此运算符不会让来自不同内部的值交错(串联)。

和 其他两者之间的区别flatMap是可以理解的,但我不明白concatMap和之间的区别何时flatMapSequential发生。两者之间有性能差异吗?我读过它flatMapSequential有一些队列的缓冲区大小,但我不明白为什么concatMap不需要它。

reactor project-reactor reactive-streams spring-webflux

9
推荐指数
1
解决办法
1万
查看次数