我正在使用Angular 2和RxJS 5.
这两者之间有什么区别:
哪个应该先使用?感谢
isOpen$ = new BehaviorSubject<boolean>(true);
和
isOpen$ = BehaviorSubject.create(true);
答案 0 :(得分:10)
BehaviorSubject
没有create
方法,所以我猜这是Subject
基类暴露的。
使用构造函数。
在这种情况下,您应该使用BehaviorSubject
的构造函数。 create
方法用于合并Observer
和Observable
。
例如,您可以通过执行以下操作将WebSocket
转换为Subject
:
var webSocket = new WebSocket(url);
var observer = Observer.create(next => webSocket.send(JSON.stringify(next)));
var observable = Observable.fromEvent(webSocket, 'message', m => JSON.parse(m.data));
var subject = Subject.create(observer, observable);
答案 1 :(得分:1)
它们在Subject
上似乎完全相同。但是,在BehaviorSubject
上没有create
方法。它继承自Subject
以下是Subject
static create: Function = <T>(destination: Observer<T>, source: Observable<T>): Subject<T> => {
return new Subject<T>(destination, source);
};
constructor(protected destination?: Observer<T>, protected source?: Observable<T>) {
super();
this.source = source;
}
在BehaviorSubject
上,它可能尚未实施。可能将来会实施。
因此,在BehaviorSubject
中,create
的行为与构造函数完全不同。