rxjs中的简单可观察/观察者

时间:2016-12-16 22:11:29

标签: rxjs

我尝试了两种不同的方法来设置观察者/观察者以使这段代码有效:

设置#1:

var xObserver;
var xObservable = Rx.Observable
    .create(observer => xObserver = observer)
    .publish()
    .refCount();

设置#2:

var xObserver = Rx.Subject.create();
var xObservable = x;

用法

xObserver.next('foo'); // no subscription yet, so nothing should happen
xObservable.subscribe(v => console.log(v)); // pipe values to console
xObserver.next('bar'); // push another value, should go to console

我期望当“foo”被推向观察者时,没有任何事情发生,并且只有“bar”会显示在控制台上。

使用“Setup#1”我收到一个错误“TypeError:无法读取未定义的属性',这是有道理的,因为没有观察者已经订阅,所以xObserver尚未初始化。

使用“Setup#2”我收到错误“TypeError:xObserver.next不是函数”。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

使用:

let xObs = new Rx.Subject();

当您使用.create时,您必须提供观察者,有关详细信息,请参阅docs

另一个陷阱可能是版本,版本< 5只有.onNext()

xObs.onNext("myData");

https://jsfiddle.net/mzkmuewf/

在版本> 5,只有.next()

xObs.next("myData");

https://jsfiddle.net/j1sksg7q/