调用Rx.Subject.create()
不带参数的创建AnonymousSubject
不具有destination
观察:
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
实施next
简单地调用转发到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);
}
}
...
}
所以你问题中的例子什么都不做。这是可能的,这是在本教程的一个简单的错误,如下面将看到foo
登录到控制台:
var myObservable = new Rx.Subject();
myObservable.subscribe(value => console.log(value));
myObservable.next('foo');
注意上面的代码创建一个Subject
,而不是AnonymousSubject
。
感谢所有的细节,我真的很感谢 - 这是非常有帮助的。 –