Rxjs中不存在Angular 6 throttleTime

问题描述 投票:2回答:2

我正在使用angular/cli": "~6.1.5rxjs": "^6.0.0因为我是Angular 6的新手,我开始从官方文档中学习

http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html

代码如下

var clicks = Rx.Observable.fromEvent(document, 'click');
var result = clicks.throttleTime(1000);
result.subscribe(x => console.log(x));

我在角度6中尝试过相同的代码

fromEvent(mybuttonId, 'click')
      .subscribe((event) => console.log('clicked'));

但是,如果我从事件添加.throttleTime(1000),那么它将抛出错误

属性'throttleTime'在类型'Observable上不存在

'`.

如果我尝试添加Observable.fromEvent,那么该方法不存在

我已经导入了Rx js

import {Observable, fromEvent, from, of} from 'rxjs';
import {throttleTime} from 'rxjs/operators';

任何人都可以帮助我找到最新版本的确切文档。

谢谢

javascript angular rxjs angular6
2个回答
6
投票

它可以通过管道连接到这样的Observable:

import { fromEvent } from 'rxjs';
import { throttleTime } from 'rxjs/operators';

subscription = fromEvent(document, 'click')
               .pipe(throttleTime(1000))
               .subscribe(x => console.log(x));

您可以在官方文档中找到它:

fromEvent | throttleTime

还要确保unsubscribe中的subscription以避免任何内存泄漏。一般来说,这是在ngOnDestroy完成的


0
投票

感谢Siddharth Ajmera提供使用管道的线索。在最新版本的rx js中,我们可以执行以下操作

 fromEvent(this.hoverSection, 'click')
      .pipe(throttleTime(1000))
      .subscribe((event) => console.log('clicked'));
© www.soinside.com 2019 - 2024. All rights reserved.