带下划线的退回函数

我得到了一个函数,它接受一些参数,但是下划线 deounce 的用法是:

var lazyLayout = _.debounce(calculateLayout, 300);

但是在我的例子中,calculateLayout需要一些参数来运行?

更新:

calculateLayout函数示例:

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

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);

@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);

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

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.