Разница между «новым BehaviorSubject» и «BehaviorSubject.create»

Я использую Angular 2 и RxJS 5.

Есть ли разница между этими двумя:

И что использовать в первую очередь? Спасибо

isOpen$ = new BehaviorSubject<boolean>(true);

а также

isOpen$ = BehaviorSubject.create(true);

person Hongbo Miao    schedule 13.05.2016    source источник
comment
Java, но, вероятно, применяются те же принципы: вместо конструкторов"> stackoverflow.com/questions/13046877/   -  person Kevin Krumwiede    schedule 13.05.2016
comment
@KevinKrumwiede спасибо за помощь!   -  person Hongbo Miao    schedule 15.05.2016


Ответы (2)


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);
person paulpdaniels    schedule 14.05.2016

Кажется, они точно такие же на 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 полностью отличается от поведения конструктора.

person Abdulrahman Alsoghayer    schedule 14.05.2016