Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RxJs运营商是否无需修补?_Rxjs_Rxjs5 - Fatal编程技术网

RxJs运营商是否无需修补?

RxJs运营商是否无需修补?,rxjs,rxjs5,Rxjs,Rxjs5,我正在用RxJs 5.5运行angular5,刚刚发现filter之类的操作符不需要导入就可以使用。它们似乎是已知的无需修补的可观察类型的方法。如果这是真的,那么可管道操作符就没有意义了,因为它们通过提供不修补的方法来解决修补全局可观察类型的问题。听起来对吗 如果它是正确的,那么在不导入过滤器的情况下,它是如何工作的呢 .callFunctionThatReturnsObserable() .filter(x => x == "astring") 如果您从应用程序中的任何位置的“rxjs

我正在用RxJs 5.5运行angular5,刚刚发现filter之类的操作符不需要导入就可以使用。它们似乎是已知的无需修补的可观察类型的方法。如果这是真的,那么可管道操作符就没有意义了,因为它们通过提供不修补的方法来解决修补全局可观察类型的问题。听起来对吗

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

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

如果您从应用程序中的任何位置的“rxjs”(或“rxjs/Rx”)导入Observable,这将为整个应用程序的大多数标准操作符修补Observable

这样做的缺点是在生产生成文件中包含所有操作符,但优点是不需要在任何地方专门导入所需的操作符

如果您在任何地方都更改为从“rxjs/Observable”导入,那么操作符将不再被引入,因此您将需要导入您使用的操作符-但再次注意,您只需要在应用程序中的任何位置导入一次,它们将在全球范围内可用


在RxJS 6/Angular 6中,这一点发生了变化,操作符不再被修补到Observable类型上,而是与Observable
pipe
方法一起使用的独立函数。这样,您就可以从“rxjs”导入Observable,然后在每个使用它们的文件中导入操作符。它更干净,因为你不会在你描述的情况下发现,实际上,不管你是否需要它们,你已经在全球范围内导入了它们。

这取决于你如何导入RxJS类/操作符。如果您直接从
rxjs
rxjs/Rx
导入某个地方,并且不使用导入映射,那么您正在导入整个库,该库自动添加所有运算符,如果返回可观察对象的对象导入可观察类型,如:从“rxjs/observable”导入{observable};FunctionthatReturnsAbserable:Observable{return}执行补丁的是什么?从
rxjs/Observable
导入就可以了。