我有一个函数,它接受一些参数。但是下划线debounce的用法是:
var lazyLayout = _.debounce(calculateLayout, 300);
但是在我的例子中,calculateLayout
需要一些参数来运行。在这种情况下我怎样才能通过考试呢?
更新:
示例calculateLayout
函数:
var calculateLayout = function(a,b) {
console.log('a is ' + a + ' and b is ' + b);
}
您不需要在中间使用匿名函数,参数将在运行已删除版本时自动传递给原始函数。
var debounceCalculate = _.debounce(calculateLayout, 300);
debounceCalculate(a,b);
作为一个优点,您不必预先硬编码绑定参数
你可以尝试一下,如果你好奇的话,可以查看源代码
您应该能够使用匿名函数作为第一个参数,然后在其中调用您喜欢的任何内容:
_.debounce(function(){
calculateLayout(20, 30);
}, 300);
@Jamie的答案更好。
我将保留我原来的答案如下,尽管如果你熟悉JS的话,最好使用Jamie的答案:
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);
由于没有人编写没有额外var
和function
的一行,我将自己编写:
_.debounce(calculateLayout, 300)(a, b);
Debounce function返回另一个函数,因此您可以在执行Debounce之后调用它。