簡體   English   中英

如何將事件傳遞到去抖 function?

[英]How to pass event into a debounce function?

我正在搜索 Salesforce 的 Lightning 組件類型。 我做了一個去抖動 function 來檢查用戶是否停止打字,這會成功延遲。 但是,在我的 debounce function 中運行的 function 現在將不接受事件,並且console.log(event)顯示“未定義”。 我不確定如何解決此錯誤。 我的代碼如下...

    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 時,它會搜索每個按鍵,最終會得到重復或不需要的記錄。 現在去抖動它會延遲,但我找不到傳遞事件的方法。( this.getCases this.getCases()是我創建的另一個 function 檢索記錄。)關於如何做到這一點的任何想法?

首先, debounce function 將function作為第一個參數,您嘗試使用事件 object調用它。 其次, termChange是駝峰式的,但在 debounce 調用內部是全小寫的,所以這段代碼無論如何都不會運行。

現在,讓我們仔細看看debounce的作用。 它需要一個 function,然后返回另一個 function,它期望與 arguments 完全相同。 所以,如果你這樣做:

handleTermChange = debounce(termChange)

那么你應該得到一個 function ,它將事件作為它的第一個參數。 為了安全起見,我會將它綁定到您在示例中使用的任何“this”,然后它應該適合 go

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM