RxJS。从2个属性创建Observable

时间:2017-03-31 12:51:35

标签: rxjs reactive-programming observable rxjs5

我正试图围绕反应式编程和可观察的事物。

解决以下情况的反应方式是什么?

我有一个有2个属性的对象。

在任何时候,都可以设置其中一个,两个或两个属性。

这些属性中的每一个都会分析我可以收听的事件。

只有在设置了两个属性时,我才想听取他们的更新事件,并在他们的属性上运行某种聚合。

1 个答案:

答案 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函数。