Angular 在文本字段中完成键入后几毫秒内可观察到触发

Angular 在文本字段中完成键入后几毫秒内可观察到触发,angular,typescript,rxjs,observable,Angular,Typescript,Rxjs,Observable,我使用angular4和RxJS 基本假设是:当用户在textfield中输入单个字母时,我触发一些getData()函数(keyup事件),获取数据并显示在textfield下面 我不希望在用户输入字母后立即触发函数并获取数据,而是让用户输入完整的短语,例如等待300毫秒,最后触发函数,获取数据并显示 因此,我想要实现的流程类似于: myService.getDataAsObservable .whatToDoHere? .subscribe(data => ...handle and

我使用angular4和RxJS

基本假设是:当用户在textfield中输入单个字母时,我触发一些getData()函数(keyup事件),获取数据并显示在textfield下面

我不希望在用户输入字母后立即触发函数并获取数据,而是让用户输入完整的短语,例如等待300毫秒,最后触发函数,获取数据并显示

因此,我想要实现的流程类似于:

myService.getDataAsObservable
.whatToDoHere?
.subscribe(data => ...handle and display the data...);
一种解决方案是将其全部封装到setTimeout()中,但最好以可观察的方式流畅地完成

我曾经见过那个问题的解决办法,但再也找不到了


谢谢

您需要使用
debounce
操作符:

myService.getDataAsObservable
.debounce(300)
.subscribe(data => ...handle and display the data...);
以下是视觉解释:

var someObservable = getDataAsObservable('---x---x---x---|');
var someDuration = 300;  //                              '--------|';
var expected =            '---------------------------------------x---|';