5

使用带有一个参数的 Pipe 函数与根本不使用 Pipe 有什么区别吗?

我目前正在执行本文中的 takeUntil 取消订阅策略。在这个 SO question的“官方解决方案”中,takeUntil 运算符是通过管道发送的。但是,在此页面上takeUntil 没有使用管道。

因此,我想知道使用带有单个 Rx 运算符的管道与根本没有管道是否有任何区别(内存泄漏/性能等)。

private destroy$ = new Subject();
...
this.potatoService.getPotato()
   .pipe(
    takeUntil(this.destroy$)
   ).subscribe(...

this.potatoService.getPotato()
    .takeUntil(this.destroy$)
    .subscribe(...
4

3 回答 3

1

没有区别。后者是在RxJS. 但是,据我所知,它已被弃用,您不应该使用它。

Observable我们曾经用这样的静态导入将运算符原型化为s

import 'rxjs/add/operator/takeUntil';

但是,这使得摇树不可能RxJS。因此,RxJSRxJSv5.5 开始宣布了可管道操作符。始终在内部使用您的运算符pipe

于 2019-06-25T07:26:43.243 回答
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

于 2019-06-25T07:27:39.293 回答
0

关键是旧方法将运算符添加到原型中,以便每个可观察实例都可以使用它。这就是为什么它使操作员无法摇动,并且不鼓励采用这种方式。

于 2019-06-28T02:24:30.523 回答