【发布时间】:2020-09-08 22:11:35
【问题描述】:
考虑以下 4 行代码:
Mono<Void> result = personRepository.findByNameStartingWith("Alice")
.map(...)
.flatMap(...)
.subscriberContext()
我希望您能立即将其映射到您的实际任务需求的虚构用例:
如何将“Alice”添加到上下文中,以便在 .map() 之后,“Alice”不再是 Person.class 而是 Cyborg.class(假设不可逆转的转换),在 .flatMap() 中我可以访问原始“爱丽丝”Person.class。我们想在.flatMap() 内部比较“爱丽丝”人与“爱丽丝”机器人的实力,然后将他们都送上月球建造殖民地。
- 我已经阅读了大约 3 次: https://projectreactor.io/docs/core/release/reference/#context
- 我在
subscriberContext上阅读了十几篇文章 - 我查看了使用subscriberContext 但仅用于在代码顶部的管道外部静态初始化的跟踪上下文和MDM 的同事代码。
所以我得出的结论是,其他东西被命名为“上下文”,大多数人不能将其用于上面的压倒性用例。
我必须坚持使用元组和包装器吗?或者我完全是假的,有办法。我需要这个上下文以完全相反的方向工作:-),除非“这个”上下文不是我需要的上下文。
【问题讨论】:
-
响应式和函数式编程鼓励不变性。我认为这是不可能的主要原因(很容易)。此外,Reactor 已经是一个非常复杂的野兽。如果你在混合中添加一个可变上下文,它很快就会变成一场噩梦。
标签: project-reactor