I've got a function which takes in some arguments. But usage of underscore debounce is :
var lazyLayout = _.debounce(calculateLayout, 300);
But in my case calculateLayout
needs some arguments to run. How can I pass them in this case?
Update :
Sample calculateLayout
function :
var calculateLayout = function(a,b) {
console.log('a is ' + a + ' and b is ' + b);
}
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
@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);
As soon as nobody 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.