为什么我的 debounce 函数中的 return 函数从未被调用? Angularjs
Why is the return function in my debounce function never called? Angularjs
我正在学习去抖动,这个概念很有意义,但我不知道为什么我的去抖动函数 returns 的箭头函数从来不是 运行.
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)" />
任何解释都会有所帮助。我知道我们需要 return 一个函数,以便 setTimeout 存在于它自己的范围内,这样我们就可以在时间 运行 结束之前收到新输入时重置它,但我没有知道为什么 return 函数没有被调用。
我认为你在这里不需要箭头函数。
你可以直接这样写:
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);
}
我正在学习去抖动,这个概念很有意义,但我不知道为什么我的去抖动函数 returns 的箭头函数从来不是 运行.
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)" />
任何解释都会有所帮助。我知道我们需要 return 一个函数,以便 setTimeout 存在于它自己的范围内,这样我们就可以在时间 运行 结束之前收到新输入时重置它,但我没有知道为什么 return 函数没有被调用。
我认为你在这里不需要箭头函数。
你可以直接这样写:
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);
}