为什么我的 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);
}