Observable.of观看内容?

时间:2018-01-10 18:19:24

标签: javascript typescript rxjs

Observable。是观看其中内容的好方法吗?我只是想制作一个观察条件的观察点,即let observable$: Observable<boolean> = Observable.of(a === b);这是创建可观测量的好方法还是有更好的方法?

3 个答案:

答案 0 :(得分:1)

您能否提供有关您的明确示例的更多详细信息?

如果a和b是某种流,你可以让自己成为像这里一样的“观察者”

let condition: Observable<boolean> = a.combineLatest(b).map(([a, b]) => a === b)

编辑:输入值为普通布尔值

然后你可能必须将它们声明为BehaviorSubject。

a = new BehaviourSubject<boolean>(false);
b = new BehaviourSubject<boolean>(false);

要更改或获取当前值,您可以使用a.getValue()a.next(true)

现在您有两个流,可以将它们组合起来,如上所示。如果你只需要在模板中使用一次,那么就可以这样做

<p *ngIf="(a | async) === (b | async)">...<>

答案 1 :(得分:0)

Observable的创建方法一旦创建就不会观察值的变化。您可能需要直接使用Observable.create来调用观察者的next,或者在值发生变化时通过next创建主题以推送值。

答案 2 :(得分:0)

RxJS并没有这样观察变量 - 它依赖于生成事件的其他事物。

我假设您正在使用Typescript标签中的Angular。

似乎RxJS版本4确实有一个$ watch方法,这可以让你做你想做的事,但是$ watch是一个危险的工具,因为它最终会导致负面的性能影响。

Rxjs 5显然缺少$ watch,并且似乎没有迹象表明如何做到这一点。我认为你需要对此进行一些进一步的研究 - 它可能要求采用不同的方法而不是观察变量,你可能会拦截导致它改变的事件。考虑使用redux方法来通知状态变化。