问题描述
为了简化起见,我假设会有一个Flux<String>
-> "1","2","3","n"
我需要做的是获取两个连续的元素并应用一个操作(例如flatMap),该操作将根据它们生成一些元素。再次让我们假设该函数将第一个元素与第二个元素连接,并将第二个元素与第一个元素连接:
f(x,y) -> "xy","yx"
所以原始Flux发出的最终序列应该是:
"12" - "21" - "23" - "32" - "3n" - "n3"
这怎么办?
解决方法
使用buffer(2,1)
解决:
fun main() {
val flux = listOf("1","2","3","4").toFlux()
flux.buffer(2,1)
.flatMap {
if (it.size == 2) {
listOf(it[0] + it[1],it[1] + it[0]).toFlux()
} else {
Flux.empty()
}
}.doOnNext { println(it) }
.subscribe()
}