作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在搜索 Salesforce 的 Lightning 组件类型。我做了一个去抖函数来检查用户是否停止打字,这成功地实现了延迟。但是,在我的 debounce 函数中运行的函数现在不会接受事件,并且 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()
是我创建的另一个用于检索记录的函数。)有关如何执行的任何想法这个?
最佳答案
首先,debounce
函数将函数 作为第一个参数,并且您尝试使用事件对象 调用它。其次,termChange 是驼峰式大小写,但在 debounce 调用内部全部是小写,因此该代码无论如何都不会运行。
现在,让我们仔细看看 debounce
的作用。它接受一个函数,然后返回另一个需要相同参数的函数。所以如果你这样做:
handleTermChange = debounce(termChange)
那么你应该得到一个将事件作为第一个参数的函数。为了安全起见,我会将它绑定(bind)到您在示例中使用的任何“this”,然后就可以了
关于javascript - 如何将事件传递到去抖函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58101336/
我是一名优秀的程序员,十分优秀!