为什么这个简单的rxjs例子不像预期的那样运行

我想更深入地理解反应式编程的基础知识,所以我在这里通过示例: http : //reactivex.io/rxjs/manual/tutorial.html#creating-observables

我只是在文本编辑器中input它们并通过节点在terminal中运行它们。 第一个例子没有产生任何输出(第二个工作,所以这不是加载库的问题)。 我期待它输出“富”,但我什么都没有得到。 为什么?

var myObservable = Rx.Subject.create(); myObservable.subscribe(value => console.log(value)); myObservable.next('foo'); 

调用不带参数的Rx.Subject.create()会创build一个没有destination观察者的AnonymousSubject

 export class Subject<T> extends Observable<T> implements ISubscription { ... static create: Function = <T>(destination: Observer<T>, source: Observable<T>): AnonymousSubject<T> => { return new AnonymousSubject<T>(destination, source); }; ... } 

接下来的AnonymousSubject实现只是将调用转发给destination观察者,如果没有,它什么都不做:

 export class AnonymousSubject<T> extends Subject<T> { constructor(protected destination?: Observer<T>, source?: Observable<T>) { super(); this.source = source; } next(value: T) { const { destination } = this; if (destination && destination.next) { destination.next(value); } } ... } 

所以你的问题中的例子什么都不做。 这可能是教程中的一个简单的错误,因为下面将会看到foologin到控制台:

 var myObservable = new Rx.Subject(); myObservable.subscribe(value => console.log(value)); myObservable.next('foo'); 

请注意,上面的代码创build一个Subject ,而不是一个AnonymousSubject