調用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
。
感謝所有的細節,我真的很感謝 - 這是非常有幫助的。 –