2017-03-31 32 views
0

我试图围绕反应式编程和可观察到的我的头。RxJS。从2个属性创建一个Observable

什么是解决以下情况的被动方式?

我有一个2属性的对象。

在任何时候,这些属性中的一个,两个或两个都不能设置。

这些属性中的每一个都可以解开我可以听到的事件。

只有当这两个属性设置我想听他们的更新事件和运行某种聚合他们的属性。

+0

我认为应该在问题中添加所述属性和事件的代码示例,以减少回答时需要做出的假设数量。 – cartant

回答

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

相关问题