我正在學習去抖動,這個概念很有意義,但我不知道為什么我的去抖動函式回傳的箭頭函式永遠不會運行。
public debounce = (func, delay, event) => {
console.log(func, delay, event.target.value);
let debounceTimer;
return (...args) => {
clearTimeout(debounceTimer);
console.log(func, delay, event.target.value);
debounceTimer = setTimeout(() => func.apply(this, [event.target.value]), delay);
};
};
public resolveInput(event) {
console.log('resolved', event);
}
這就是我所說的去抖動器:
<input (input)="debounce(resolveInput, 1000, $event)" />
任何解釋都會有所幫助。我知道我們需要回傳一個函式,以便 setTimeout 存在于它自己的范圍內,以便我們可以在時間用完之前在收到新輸入時重置它,但我不知道為什么回傳函式不是被呼叫。再次感謝大家!
uj5u.com熱心網友回復:
我認為您在這里不需要箭頭功能。
你可以直接這樣寫:
public debounceTimer;
public debounce = (func, delay, event) => {
console.log(func, delay, event.target.value);
clearTimeout(this.debounceTimer);
console.log(func, delay, event.target.value);
this.debounceTimer = setTimeout(() => func.apply(this, [event.target.value]), delay);
};
public resolveInput(event) {
console.log('resolved', event);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/464223.html
