我正试图围绕反应式编程和可观察的事物。
解决以下情况的反应方式是什么?
我有一个有2个属性的对象。
在任何时候,都可以设置其中一个,两个或两个属性。
这些属性中的每一个都会分析我可以收听的事件。
只有在设置了两个属性时,我才想听取他们的更新事件,并在他们的属性上运行某种聚合。
答案 0 :(得分:0)
一种可能的解决方案是从每个属性创建一个流,然后使用combineLatest
组合流。
combineLatest
不会产生值。两个输入都产生了一个值后,每当值发生变化时,流都会更新。请参阅以下代码:
const property1$ = Rx.Observable.fromEvent(button1, 'click');
const property2$ = Rx.Observable.fromEvent(button2, 'click');
const aggregateWhenBothAreClicked$ = property1$
.combineLatest(property2$)
.map([property1,property2])=>doStuff(property1,property2))
在单击两个按钮之前,不会调用doStuff
函数。单击两个按钮后,每次都会调用doStuff
函数。