Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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
Javascript RxJS 5.5错误:take不是函数。链式函数的问题_Javascript_Angular_Rxjs_Angular5 - Fatal编程技术网

Javascript RxJS 5.5错误:take不是函数。链式函数的问题

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,它引入了可出租的操作符,应该

我正在阅读关于的介绍,但它没有指出这可能是对链式方法的突破性改变。这让我在我们的一个Scippts中发现,它在升级后开始抛出一个错误:

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));