gpt4 book ai didi

javascript - 将 underscore.js "debounce"函数与 typescript 一起使用

转载 作者:搜寻专家 更新时间:2023-10-30 21:20:41 26 4
gpt4 key购买 nike

基本思想是防止双击。我正在使用 html <button>单击时调用函数,这会进行 ajax 调用。 native <button> event.preventDefault() 阻止了行为,这意味着不应提交任何表格。另外,我正在使用 TypeScript:

private form: JQuery;
...
private getTargetAndCallAjax(): void {
var target: string = this.form.find("form").data("target");
this.form.find("button[type='submit']").on("click", (event)=> {
event.preventDefault();
this.callAjax(target);
});
}

private callAjax(target: string): void {
...
}

作为 ,我已经实现了 _.debounce作为:

private form: JQuery;
...
private getTargetAndCallAjax(): void {
var target: string = this.form.find("form").data("target");
this.form.find("button[type='submit']").on("click", (event) => {
event.preventDefault();
var ajaxCall = function () { this.callAjax(target) };
_.debounce(ajaxCall, 1000, true);
});
}

private callAjax(target: string): void {
...
}

目标是调用this.ajaxCall(target)每 1 秒一次,如果有多个 <button>检测到点击次数。不幸的是,功能this.ajaxCall(target)永远不会被调用。有什么想法吗?

最佳答案

这是因为您在 ajaxCall 中有错误的 this 上下文。修复:

var ajaxCall = () => { this.callAjax(target) };

PS:为什么:https://www.youtube.com/watch?v=tvocUcbCupA&hd=1

此外,_.debounce 返回您需要调用的去抖函数。所以完整代码:

   var debouncedAjaxCall = _.debounce(() => this.callAjax(target), 1000, true);
debouncedAjaxCall();

关于javascript - 将 underscore.js "debounce"函数与 typescript 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24104961/

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