为什么RxJS方法的最新版本不是静态的?

为什么RxJS方法的最新版本不是静态的?,rxjs,reactive-programming,rxjs5,Rxjs,Reactive Programming,Rxjs5,RxJS是一个实例方法。必须更新/创建可观察对象的实例才能调用该方法 该方法是一种静态方法。不需要实例 为什么RxJSwithLatestFrom不是静态方法而是实例方法 withLatestFrom不同于merge,因为它有一个规范的“源”可观测值的概念,该概念由另一个可观测值的最新值扩充merge不是这样的“分层”的,可观察的对象只是作为相等的对象组合到一个流中。我认为一个很好的例子是CombineRelateTest操作符,它以静态和实例方法的形式存在。源观测值到combineLatest

RxJS是一个实例方法。必须更新/创建可观察对象的实例才能调用该方法

该方法是一种静态方法。不需要实例


为什么RxJS
withLatestFrom
不是静态方法而是实例方法

withLatestFrom
不同于
merge
,因为它有一个规范的“源”可观测值的概念,该概念由另一个可观测值的最新值扩充
merge
不是这样的“分层”的,可观察的对象只是作为相等的对象组合到一个流中。

我认为一个很好的例子是
CombineRelateTest
操作符,它以静态和实例方法的形式存在。源观测值到
combineLatest
的顺序并不重要。其内部工作方式相同,输出也将相同(只是结果数组中的值顺序不同,这是不相关的)。这同样适用于
concat
merge
zip
forkJoin

然而,对于
withLatestFrom
操作符,它是不同的,可观测的顺序很重要。有一个可观测的源控制操作员何时发射。如果你改变顺序,它会产生不同的结果。例如,如果您具有以下内容:

Observable.withLatestFrom(o1, o2, o3)
Observable.withLatestFrom(...observables)
这意味着您还可以使用以下各项:

Observable.withLatestFrom(o1, o2, o3)
Observable.withLatestFrom(...observables)
现在你不知道哪一个可观测的是源,并且很难调试正在发生的事情

因此,没有可观察的
方法的原因是因为它没有多大意义。可观察事物的顺序很重要,它会使事物变得更加混乱

出于同样的原因,其他操作符,如
buffer
window
没有其静态形式,即使没有技术限制。它只允许您编写更多命令式代码,而不是简单地链接运算符