Debounce function with args underscore

@Jamie's answer is better.

I'll keep my original answer as below, although the it should be better to use Jamie's answer if you are familiar with JS:

var calculateLayout = function(a,b) {
  console.log('a is ' + a + ' and b is ' + b);
}

var debounceCalculate = _.debounce(function(a, b){
    calculateLayout(a, b);
}, 300);

debounceCalculate(1, 2);

Since nobody has written the one liner without extra var and function, I'll do it myself:

_.debounce(calculateLayout, 300)(a, b);

Debounce function returns another function, so you can call it just afterwards debounce is executed.


You should be able to just use an anonymous function as the first argument, then call whatever you like in it:

_.debounce(function(){
    calculateLayout(20, 30);
}, 300);

You don't need an anonymous function in the middle, arguments will automatically be passed to the original function when you run the debounced version.

  var debounceCalculate = _.debounce(calculateLayout, 300);
  debounceCalculate(a,b);

As an advantage you don't have to hardcode-bind the arguments in advance

You can try it and if curious just check the source