'new BehaviorSubject' 和 'BehaviorSubject.create' 之间的区别
Difference between 'new BehaviorSubject' and 'BehaviorSubject.create'
我正在使用 Angular 2 和 RxJS 5。
这两个有什么区别吗:
应该先用哪个?谢谢
isOpen$ = new BehaviorSubject<boolean>(true);
和
isOpen$ = BehaviorSubject.create(true);
BehaviorSubject
doesn't have a create
method, so I am guessing that is being exposed by the Subject
基础 class。
使用构造函数。
在这种情况下,您应该使用 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);
它们在 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
的行为与构造函数完全不同。
我正在使用 Angular 2 和 RxJS 5。
这两个有什么区别吗:
应该先用哪个?谢谢
isOpen$ = new BehaviorSubject<boolean>(true);
和
isOpen$ = BehaviorSubject.create(true);
BehaviorSubject
doesn't have a create
method, so I am guessing that is being exposed by the Subject
基础 class。
使用构造函数。
在这种情况下,您应该使用 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);
它们在 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
的行为与构造函数完全不同。