Я использую Angular 2 и RxJS 5.
Есть ли разница между этими двумя:
И что использовать в первую очередь? Спасибо
isOpen$ = new BehaviorSubject<boolean>(true);
а также
isOpen$ = BehaviorSubject.create(true);
Я использую Angular 2 и RxJS 5.
Есть ли разница между этими двумя:
И что использовать в первую очередь? Спасибо
isOpen$ = new BehaviorSubject<boolean>(true);
а также
isOpen$ = BehaviorSubject.create(true);
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);
Кажется, они точно такие же на 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
полностью отличается от поведения конструктора.