我有一个 http 请求,如果用户在输入中输入至少 4 个字符并在每次更改其内容(添加/删除字母)时触发,则会触发该请求。我想添加一个超时,如果用户开始输入字符,该函数将等待 1 秒直到它触发请求,以避免在用户快速输入时出现大量请求。我的尝试:
if (this.pointName.length >= 3) {
let timer = function() {
this.http.get(`./points.json`)
.subscribe(res => {
this.pointsArray = res.json();
});
};
clearTimeout(timer);
setTimeout(timer,1000);
我的想法是清除每个keyup
事件的超时并再次设置它。但不幸的是,它给了我一个错误,'() => void' 类型的参数不能分配给'number' 类型的参数。
有什么方法可以更有效地做到这一点吗?也许使用 RxJS?无论如何,我正在寻找一个可行的解决方案。先感谢您。
HTML
<input type="text" id="searchInput" placeholder="Point name"(keyup)="getPoints()">