gpt4 book ai didi

javascript - 如何将事件传递到去抖函数中?

转载 作者:行者123 更新时间:2023-11-28 03:31:56 25 4
gpt4 key购买 nike

我正在搜索 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com