新的Observable(...)和Rx.Observable.create(...)之间的区别?

时间:2017-08-28 06:15:33

标签: angular typescript rxjs observable

我正在更新我们的软件,用所有承诺(以及其他毛茸茸的垃圾)代替可观察物。为了确保我遵循最佳做法,我做了一个快速googlearch并注意到在some cases中,建议的语法是实例,而在other cases中,示例执行工厂调用。

const byInstance = new Observable(_ => { ... });

const byFactory = Rx.Observable.create(_ => { ... });

我很好奇实际差异是什么。它们是否可以互换?它是一种较旧/较新的语法/方法吗?它与框架有关吗?而且,当然,这是首选(没有见解,有争议等情况下)。

2 个答案:

答案 0 :(得分:18)

没有区别。 Observable.create calls new Observable

正如the manual所说,

  

使用Rx.Observable.create或创建来创建Observable   操作

     

< ...>

     

Rx.Observable.create是Observable构造函数的别名

传统上使用

Observable.create,可能是因为它在链中读得更好并且与创建可观察对象的其他Observable静态方法一致。

差异可能出现在子类中。例如,Subject.create等于AnonymousSubject.create且不等于new Subject。通常Subject.create是提供理想行为的人,而new Subject则更低级。这证实了关于惯例的观点。

另一方面,某些类(特别是BehaviorSubject)应该与new一起使用,因为create签名不允许向它们提供所需的行为。

答案 1 :(得分:2)