我有一個http請求,如果用戶在輸入內輸入至少4個字符,並且每次更改其內容(添加/刪除字母)時觸發該請求。我想添加一個超時,如果用戶開始輸入字符,函數將等待1秒鐘,直到它觸發請求,以避免用戶在快速輸入時出現很多請求。我嘗試:每個函數調用清除超時Angular2 RxJS
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()">
爲更好的方法你的場景是使用rxjs'debounce'運算符。 –