如何将事件传递给去抖功能?
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" 然后它应该很好去
我正在搜索适用于 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" 然后它应该很好去