Javascript RxJS 5.5错误:take不是函数。链式函数的问题
我正在阅读关于的介绍,但它没有指出这可能是对链式方法的突破性改变。这让我在我们的一个Scippts中发现,它在升级后开始抛出一个错误:Javascript RxJS 5.5错误:take不是函数。链式函数的问题,javascript,angular,rxjs,angular5,Javascript,Angular,Rxjs,Angular5,我正在阅读关于的介绍,但它没有指出这可能是对链式方法的突破性改变。这让我在我们的一个Scippts中发现,它在升级后开始抛出一个错误: let things = new BehaviorSubject<Thing[]>([]); things.filter((things) => things.length > 0).take(1).subscribe( ... ) …但我不知道为什么我突然被迫这么做。Angular 5支持RxJS 5.5,它引入了可出租的操作符,应该
let things = new BehaviorSubject<Thing[]>([]);
things.filter((things) => things.length > 0).take(1).subscribe( ... )
…但我不知道为什么我突然被迫这么做。Angular 5支持RxJS 5.5,它引入了可出租的操作符,应该有助于在应用程序捆绑期间删除未使用的代码,从而实现树抖动过程。您可以从“rxjs/operators”导入运算符,然后将它们包装到一个函数
pipe()
,该函数接受可变数量的参数,例如:
import { debounceTime, map} from 'rxjs/operators';
...
let keyupValue$ = keyup$
.pipe(
debounceTime(500),
map(event => event['target'].value))
.subscribe(val => this.doSomething(val));
我更喜欢旧的语法。但我不认为这是一个突破性的变化。如果不使用“rxjs/operators”中的导入,可以继续使用旧语法。看看有趣的是,包装
take()
修复了与filter()相关的错误。
刚刚用最新的@angular()尝试过/cli@1.5.2. 旧的导入语法import'rxjs/add/operator/filter'
仍然有效。
import { debounceTime, map} from 'rxjs/operators';
...
let keyupValue$ = keyup$
.pipe(
debounceTime(500),
map(event => event['target'].value))
.subscribe(val => this.doSomething(val));