带有动态参数的 Javascript 去抖动回调函数

问题描述

所以对于一个功能,我必须使用 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();