[英]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.