使用带有一个参数的Pipe函数与根本不使用Pipe相比有什么区别吗?
我目前正在实施this article中的takeUntil取消订阅策略。在this SO question的“官方解决方案”中,takeUntil运算符通过管道发送。但是,在this page上,takeUntil不使用任何管道。
因此,我想知道使用带有单个Rx运算符的管道与根本没有管道的管道是否有任何区别(内存泄漏/性能等)。
private destroy$ = new Subject();
...
this.potatoService.getPotato()
.pipe(
takeUntil(this.destroy$)
).subscribe(...
相对于
this.potatoService.getPotato()
.takeUntil(this.destroy$)
.subscribe(...
答案 0 :(得分:1)
没有区别。后者是在RxJS
中使用运算符的旧方法。但是,据我所知,它已被弃用,您不应使用它。
我们曾经使用静态导入将操作符原型化为Observable
import 'rxjs/add/operator/takeUntil';
但是,这使得无法摇晃RxJS
。因此,RxJS
宣布了从RxJS
v5.5开始的可管道运算符。始终在pipe
答案 1 :(得分:1)
自RxJS v6起,takeUntil
(及其他)已成为可管道运算符,而不是独立的函数。
在您共享的链接中,请查看“导入”部分,这意味着该示例使用的是RxJS的早期版本:
import 'rxjs/add/operator/takeUntil';
根据RxJS v6的官方文档,takeUntil
的导入路径为:
import { takeUntil } from 'rxjs/operators';
进一步阅读:https://rxjs-dev.firebaseapp.com/api/operators/takeUntil
答案 2 :(得分:0)
重点是,旧方法将运算符添加到原型,以便每个可观察的实例都可以使用它。这就是为什么它会使操作员变得不可动摇,并且不鼓励这样做。