首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“新BehaviorSubject”和“BehaviorSubject.create”的区别

“新BehaviorSubject”和“BehaviorSubject.create”的区别
EN

Stack Overflow用户
提问于 2016-05-13 19:39:19
回答 2查看 4.2K关注 0票数 6

我使用的是角2和RxJS 5。

这两者之间有什么区别吗?

应该先使用哪一种?谢谢

代码语言:javascript
复制
isOpen$ = new BehaviorSubject<boolean>(true);

代码语言:javascript
复制
isOpen$ = BehaviorSubject.create(true);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-14 06:22:20

BehaviorSubject没有create方法,因此我猜想Subject基类正在公开这个方法。

使用构造函数。在本例中,您应该使用BehaviorSubject的构造函数。create方法用于组合ObserverObservable

例如,您可以通过执行以下操作将WebSocket转换为Subject

代码语言:javascript
复制
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);
票数 10
EN

Stack Overflow用户

发布于 2016-05-14 06:25:39

Subject上,它们似乎完全一样。然而,在BehaviorSubject上没有create方法。它是从Subject继承来的

这是来自Subject的代码

代码语言:javascript
复制
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的行为与构造函数完全不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37218114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档