gpt4 book ai didi

javascript - 为什么 debounce 函数不执行该方法?

转载 作者:行者123 更新时间:2023-12-01 03:54:04 42 4
gpt4 key购买 nike

当我运行此代码时,我在控制台中看不到任何控制台日志。 debounce 方法(取自 here )根本不执行该方法吗?

function debounce(func, wait, immediate) {
var timeout;
var args = Array.prototype.slice.call(arguments, 3);
return function () {
var context = this;
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(function () {
timeout = null;
if (!immediate) {
func.apply(context, args);
}
}, wait);
if (callNow) func.apply(context, args);
};
};

var f1 = function(){ console.log(1) };
var f2 = function(){ console.log(2) };
debounce( f1, 100, false );
debounce( f2, 100, false );

这是预期的行为还是我在这里错过了什么?

最佳答案

那是因为您的 debounce 函数返回另一个函数。你必须这样调用它:

debounce( f1, 100, false )(); 
debounce( f2, 100, false )();

function debounce(func, wait, immediate) {
var timeout;
var args = Array.prototype.slice.call(arguments, 3);
return function () {
var context = this;
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(function () {
timeout = null;
if (!immediate) {
func.apply(context, args);
}
}, wait);
if (callNow) func.apply(context, args);
};
};

var f1 = function(){ console.log(1) };
var f2 = function(){ console.log(2) };
debounce( f1, 100, false )();
debounce( f2, 100, false )();

关于javascript - 为什么 debounce 函数不执行该方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42922875/

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