<input autocomplete="off" [config]="config2" [items]="items2" (inputChangedEvent)="onInputChangedEvent($event)" (selectEvent)="onSelect($event)">`enter code here`
onInputChangedEvent(val: string) {
this.changeEvent.emit(val);
this.inputChanged = val;
if (this.timer) {
clearTimeout(this.timer);
}
// trigger the search action after 400 millis
this.timer = setTimeout(this.searchFunction(val), 200);
}
我正在使用 InputChangedEvent ,我们如何延迟事件
答案 0 :(得分:1)
您不能将带有参数的函数传递给Dialog MessageBox
,需要创建另一个函数,在其中调用该函数:
setTimeout()
通过将函数直接传递给setTimeout,JavaScript执行函数并将返回值用作回调。因此,您的var _this = this;
setTimeout(function () {
_this.searchFunction(val);
}, 200);
每次都会执行。
答案 1 :(得分:0)
您是否要问仅在400毫秒内没有键入内容时才触发操作?
如果是这样,通常的方法是“死人的开关”(我相信是从火车上的旧安全装置借来的名称)。
基本思想是,每次看到按键时,您都将杀死现有的计时器(如果有),并启动一个400毫秒的计时器。
然后,如果计时器最终触发,您就知道已经过了400毫秒而没有击键,您就可以执行操作。