问题描述
所以对于一个功能,我必须使用 javascript debounce 函数,它看起来像这样:
$.debounce = function (func,wait,immediate) {
var timeout;
return function() {
var context = this,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);
}
};
};
我是回调函数的新手,刚刚意识到这个函数返回一个我可以调用的函数。但我不能直接调用它。但是,我想要动态参数,而不是每次都创建一个新的变量函数对象。
function print_something(){
// prints something
}
我会这样做:
var print_debounce = $.debounce(print_something,100);
And then I can use
print_debounce();
但我想让 print_debounce 更加动态。
例如(不起作用)
var function_debounce = $.debounce(func,wait);
function_debounce(print_something,100);
有没有办法做到这一点?
谢谢!
解决方法
我找到了一种方法,但它不是很明显,而且可能比它应该的更复杂。
var debounce_function = function (func,wait,immediate) { return $.debounce(func,immediate); };
debounce_function(print_something,1000,false).call();