如何将事件传递给去抖功能?

How to pass event into a debounce function?

我正在搜索适用于 Salesforce 的 Lightning 组件类型。 我做了一个去抖功能来检查用户是否停止打字,这成功地延迟了。但是,在我的去抖动函数中运行的函数现在不会接受事件并且 console.log(event) 表示 'undefined'。我不确定如何解决此错误。我的代码如下...

    debounce(func, wait, immediate) {
        var timeout;

        return function executedFunction() {
          var context = this;
          var args = arguments;

          var later = function() {
            timeout = null;
            if (!immediate) func.apply(context, args);
          };
          var callNow = immediate && !timeout;
          clearTimeout(timeout);
          timeout = setTimeout(later, wait);
          if (callNow) func.apply(context, args);
        };
      }

    termChange(evt) {
        this.rows = [];
        this.searchTerm = evt.target.value;
        this.getCases();
    }

    handleTermChange = this.debounce(evt, function(){
        this.termchange();
    }, 2000, false)

当我过去只调用 termChange 时,它​​会搜索每个按键,你最终会得到重复的或不需要的记录。现在使用 debounce 它会延迟,但我找不到传递事件的方法。(this.getCases() 是我创建的另一个检索记录的函数。)关于如何执行此操作的任何想法?

首先,debounce 函数将 函数 作为第一个参数,您正试图用 事件对象 [=24= 调用它].其次,termChange 是驼峰式的,但在 debounce 调用中是全小写的,所以这段代码无论如何都不会 运行。

现在,让我们仔细看看 debounce 的作用。它需要一个函数,然后 returns 另一个需要相同参数的函数。所以如果你这样做:

handleTermChange = debounce(termChange)

那么你应该得到一个将事件作为第一个参数的函数。为了安全起见,我会将它绑定到您在示例中使用的任何 "this" 然后它应该很好去