2016-06-08 55 views
1

我已经在我的项目,该项目被称为isPossible一个布尔观察到的,这是怎么声明:我可以同时获得可观察值吗? (角/ ReactiveX)

isPossible: Observable<boolean>; 

我想补充的条件,这是isPossibletrue,但我想它添加到其他条件同步评估的地方,我知道如何使用可观察值的唯一方法是使用异步管道...就像{{isPossible | async}},但是在这里我需要同步获取它......我该怎么做?

回答

2

思考的观察为一种承诺的,可以返回更多而不是一段时间的价值。在这种情况下,您正在创建发布布尔值的异步流。您可以为值的反应方式是把流上的subscribe你的行动,然后你得到真正的价值:

isPossible.subscribe((latestIsPossibleValue: boolean) => { 
    if (latestIsPossibleValue) { 
    // do something on 'true' 
    } 
}) 

你能否扩展更多的你已经得到的情况?

+0

而不是使用内部订阅'if(latestIsPossibleValue)',我会使用'.filter((latestIsPossibleValue:boolean )=> latestIsPossibleValue)'订阅之前。 – Dorus

0

不要把异步当你想同步

{{isPossible}} 

,最终不让它观察的,只是一个简单的布尔

+0

它必须是可观察的其他地方即时通讯使用它,只是为了这种情况下,我想同步获取值 – Ninja

0

你可以做isPossible.filter(e => e).subscribe((e) => { ... })

处于RX,你先转换成可观察其他观测,例如,在这种情况下,我们改变isPossible观察到能产生既truefalse,进入一个只有true产生具有.filter(e => e)

接下来,您可以订阅observable。 subscribe激活可观察序列。一旦订阅,订阅内的代码将在每次产生一个值时执行。