'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 方法用于组合 ObserverObservable

例如,您可以通过以下操作将 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 的行为与构造函数完全不同。