通量上的平面图总是连续的吗?我知道在flatMap返回通量中使用then函数时不是顺序的。项目Reactor平面图
但是如果flatMap中使用的函数返回mono,它是否总是顺序的?
假设我有一个函数,它接受一个对象,只返回Mono。
fun aFunction(foo: Int): Mono<Int> {
return (foo + 1).toMono()
}
然后呢
Flux.just(1,2,3,4)
.flatMap{ aFunction(it) }
总是返回2,3,4,5?
否,flatMap
不是顺序的。flatMap
急切地订阅内部流。以下是其工作原理的总结:
由于这些内部订阅是并行发生的,因此不能保证哪个内部流将首先发出on完整
。因此,没有订购保证。
concatMap
在另一方面给出了排序保证(在它从上游接收事件的确切顺序)。这是因为它只有在前一个流发出on完整
后才订阅下一个流。
这是我不久前在flatMap上写的一篇文章:https://medium.com/swlh/understanding-reactors-flatmap-operator-a6a7e62d3e95
注意:输出中很可能会出现2,3,4,5。当你的通话是同步的时,就会发生这种情况。但这并不能保证,对于任何类型的订购要求,您都不应该依赖flatMap
。
我从留档中读到: 将该流量发出的元素异步转换为发布者,然后通过合并将这些内部发布者平坦化为单个流量,从而允许它们交错。 那个: 将此流量发出的元素异步转换为发布者,然后将这些内部发布者平坦化为单个流量,但按其源元素的顺序合并它们。 并且: 将此流量发出的元素异步转换为发布者,然后将这些内部发布者展平为单个流量,顺序并使用串联保持顺序。该运算符有三个维度可以与flatMap和flatMapSeque
我继续玩Retor,现在我看到运算符的行为完全类似于,我想知道是否有任何我不明白的区别。 这两个示例的行为和返回的结果相同。 问候。
我已经找到了很多关于RxJava的答案,但我想了解它在Reactor中是如何工作的。 我目前的理解是非常模糊的,我倾向于认为map是同步的,flatMap是异步的,但我不能真正理解它。 以下是一个例子: 我有文件(a
你好 在这里,我做了两个元素的通量,然后通过平面图公开第一个异常,第二个通量。 使用onErrorResume,我希望输出 但什么也得不到。谁能解释一下为什么会这样? 谢谢
假设我有这样的代码: 输出是相同的线程名称,所以这里没有的好处--我的意思是有一个线程来完成所有的工作。 在内部有以下代码: 我理解强制属性如果“outer”流将是并行的(它们可能会阻塞),“outer”将不得不等待“flatmap”完成,反过来(因为使用了相同的公共池),但为什么总是强制这样做呢? 这是一个可以在以后的版本中改变的东西吗?
Floorplan 是 Home Assistant 最受瞩目的衍生项目之一。其作用是衔接房屋平面图与Home Assistant 智能家居,打造活点地图般的控制界面。