RxJS 5.5 错误:take 不是一个函数.链式函数出现问题



我正在阅读有关在 RxJS 中引入可出租/可管道函数的信息,但没有任何地方说明这可能是链式方法的重大更改。这让我在我们的一个 scipt 中发现了升级后开始抛出错误:

let things = new BehaviorSubject<Thing[]>([]);
things.filter((things) => things.length > 0).take(1).subscribe( ... )
错误

类型错误: tasks.filter(...(.采取不是一个函数

有人可以解释/指出一篇文章来解释为什么会发生这种情况吗?顺便说一句,修复方法是将take(1)包装在pipe()函数中:

things.filter((things) => things.length > 0).pipe(take(1)).subscribe( ... )

..但我不确定为什么突然被迫这样做。

Angular 5

支持 RxJS 5.5,它引入了可出租运算符,这些运算符应该有助于在应用程序捆绑期间删除未使用的代码的摇树过程。您可以从"rxjs/运算符"导入运算符,然后将它们包装到一个函数pipe()中,该函数采用可变数量的参数,例如:

import { debounceTime, map} from 'rxjs/operators';
...
let keyupValue$ = keyup$
  .pipe(
     debounceTime(500),
     map(event => event['target'].value))
  .subscribe(val => this.doSomething(val));

我更喜欢旧语法。不过,我不认为这是一个重大变化。如果您不使用从"rxjs/运算符"导入,则可以继续使用较旧的语法。

最新更新