我正在试图弄清楚如何为使用Project Reactor的应用程序整理设计。假设我有一个类似于应用程序的电子表格,需要根据其他值更新值。有为这些值定义的公式。例如:
A = 1.5B + C
我认为A,B和C都是某种Flux(但我不确定我将使用的具体实现),因为任何值都可能根据用户输入而改变,或者因为C可能是基于另一个公式(例如C = D * E)。但这是扭曲,如果A.Jurisdiction =“MI”,则公式变为:
A = 1.25B + 1.25C
除了商业现实之外,还有各种各样的怪癖,也许有20种不同的变化,而不仅仅是两种。
我知道如何以OO的方式做到这一点,但我正试图围绕如何使用反应流/ Reactor来做到这一点。
编辑:我正在试图弄清楚如何以声明的方式完成它。
答案 0 :(得分:0)
到目前为止,根据我的研究,简短的回答是观看此视频并应用课程:
答案 1 :(得分:0)
您希望将您的单元格表示为Flux<Double>
,并且对所有单元格的每次更新都将是所述通道中的onNext
事件,并传播到相关单元格?
要将单元格绑定在一起,combineLatest
将会被调整。你可以做这样的事情(以你的特定例子为例):
public Flux<Double> cellA() {
if (A.Jurisdiction.equals("MI")) {
return Flux.combineLatest(cellB(), cellC(), (b, c) -> 1.25d * b + 1.25d * c);
} else {
return Flux.combineLatest(cellB(), cellC(), (b, c) -> 1.5d * b + c);
}
}
每次在源单元格中出现新值时,A的通量将更新,使用该新值和最后看到的值来自另一个通量作为BiFunction
的输入。
主要难点在于“可编辑单元格”(与“公式单元格”相对,此处为B和C),以将用户输入的更新反映为Flux<Double>
。
您可以查看Flux.create()
例如。尝试将UI中的编辑事件桥接到Flux<Double>
。