代码之家  ›  专栏  ›  技术社区  ›  Craig

RXJS操作员不需要修补就可以使用?

  •  0
  • Craig  · 技术社区  · 7 年前

    我用RXJS 5.5运行Angular5,刚发现像filter这样的操作符在不导入它们的情况下是可用的。它们似乎是已知的无需修补的可观察类型的方法。如果这是真的,那么在管道运营商中就没有意义了,因为他们来解决修补全局可观测类型的问题,而不是提供不修补的方法。听起来对吗?

    如果它是正确的,那么在没有导入过滤器的情况下,这是如何工作的呢?

    .callFunctionThatReturnsObserable()
    .filter(x => x == "astring")
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Mark Hughes    7 年前

    如果您在应用程序的任何位置从“rxjs”(或“rxjs/rx”)导入Observable,那么这将使用整个应用程序的大多数标准运算符修补Observable。

    这有一个缺点,即在生产构建的文件中包含所有的操作符,但是它的优点是您不需要在任何地方专门导入所需的操作符。

    如果在任何地方改为从“rxjs/observable”导入,则操作员将不再被拉入,因此您需要导入您使用的那些操作员-但再次注意,您只需要导入一次,在应用程序中的任何位置,并且它们将全局可用。

    在RXJS 6/Angular 6中,这一点发生了变化,操作员不再使用Observable类型,而是独立于Observable使用的函数。 pipe 方法。这样,就可以从“rxjs”导入observable,然后在每个文件中导入使用它们的操作符。这就更清楚了,因为你不会在你描述的情况下,你会发现,实际上,不管你是否需要它们,你都已经将它们导入了全球。