为什么 withLatestFrom RxJS 方法不是静态的?
Why withLatestFrom RxJS method not static?
RxJS withLatestFrom 是一个实例方法。必须更新 Observable 的实例 up/created 才能调用该方法。
merge方法是静态方法。不需要实例。
为什么RxJS withLatestFrom
不是静态方法而是实例方法?
withLatestFrom
与 merge
不同,因为它具有规范 "source" 可观察值的概念,由另一个可观察值的最新值增强。 merge
不是这样的 "hierarchical",observables 只是被等量地组合成一个流。
我认为一个很好的例子是作为静态和实例方法存在的 combineLatest
运算符。源 Observables 到 combineLatest
的顺序无关紧要。它的内部结构以相同的方式工作并且输出将是相同的(只是结果数组中值的顺序将不同,这是无关紧要的)。 concat
、merge
、zip
、forkJoin
等也是如此。
然而对于 withLatestFrom
运算符,它是不同的,Observables 的顺序很重要。有一个源 Observable 控制操作符何时发出。如果您更改顺序,它会产生不同的结果。例如,如果您有以下内容:
Observable.withLatestFrom(o1, o2, o3)
这意味着您还可以使用以下内容:
Observable.withLatestFrom(...observables)
现在您不知道哪个 Observable 是源,并且很难调试正在发生的事情。
所以之所以没有Observable.withLatestFrom
静态方法是因为它没有多大意义。 Observables 的顺序很重要,它会让事情变得更加混乱。
出于同样的原因,即使没有技术限制,其他运算符(例如 buffer
或 window
也没有静态形式。它只会让您编写更多命令式代码,而不是简单地链接运算符。
RxJS withLatestFrom 是一个实例方法。必须更新 Observable 的实例 up/created 才能调用该方法。
merge方法是静态方法。不需要实例。
为什么RxJS withLatestFrom
不是静态方法而是实例方法?
withLatestFrom
与 merge
不同,因为它具有规范 "source" 可观察值的概念,由另一个可观察值的最新值增强。 merge
不是这样的 "hierarchical",observables 只是被等量地组合成一个流。
我认为一个很好的例子是作为静态和实例方法存在的 combineLatest
运算符。源 Observables 到 combineLatest
的顺序无关紧要。它的内部结构以相同的方式工作并且输出将是相同的(只是结果数组中值的顺序将不同,这是无关紧要的)。 concat
、merge
、zip
、forkJoin
等也是如此。
然而对于 withLatestFrom
运算符,它是不同的,Observables 的顺序很重要。有一个源 Observable 控制操作符何时发出。如果您更改顺序,它会产生不同的结果。例如,如果您有以下内容:
Observable.withLatestFrom(o1, o2, o3)
这意味着您还可以使用以下内容:
Observable.withLatestFrom(...observables)
现在您不知道哪个 Observable 是源,并且很难调试正在发生的事情。
所以之所以没有Observable.withLatestFrom
静态方法是因为它没有多大意义。 Observables 的顺序很重要,它会让事情变得更加混乱。
出于同样的原因,即使没有技术限制,其他运算符(例如 buffer
或 window
也没有静态形式。它只会让您编写更多命令式代码,而不是简单地链接运算符。