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