RxJs运算符可以不打补丁吗?

时间:2018-08-02 13:36:00

标签: rxjs rxjs5

我在RxJs 5.5上运行angular5,只是发现像filter这样的运算符在不导入的情况下可用。它们似乎是没有修补的Observable类型的已知方法。如果这是真的,那么可管道运算符就没有意义了,因为它们来通过提供不进行修补的方法来解决修补全局可观察类型的问题。听起来正确吗?

如果正确,那么即使不导入过滤器,这又如何工作?

.callFunctionThatReturnsObserable()
.filter(x => x == "astring")

1 个答案:

答案 0 :(得分:1)

如果您从应用程序中的任何地方的“ rxjs”(或“ rxjs / Rx”)导入Observable,则会使用整个应用程序的大多数标准运算符来修补Observable。

这具有将所有运算符都包含在生产生成的文件中的缺点,但是具有不需要在任何地方专门导入所需运算符的优点。

如果您更改为从任何地方从'rxjs / Observable'导入,则将不再引入运算符,因此您将需要导入使用的运算符-但同样,请注意,您只需要在任何位置导入一次即可在您的应用程序中,它们将在全球范围内可用。

在RxJS 6 / Angular 6中,对此进行了更改,并且不再将运算符修补到Observable类型上,而是将其与Observable pipe方法一起使用的独立函数。这样,您可以从“ rxjs”导入Observable,然后将运算符导入使用它们的每个文件中。这样做更加简洁,因为您不会遇到这样的情况,即您实际上不会以某种方式描述无论您是否需要它们,都已将它们全部导入全球。