我有一个带有一些参数的函数。但是下划线去抖动的用法是:
var lazyLayout = _.debounce(calculateLayout, 300);
但就我而言,calculateLayout需要运行一些参数。在这种情况下如何通过他们?
更新:
样例calculateLayout功能:
var calculateLayout = function(a,b) {
console.log('a is ' + a + ' and b is ' + b);
}
我有一个带有一些参数的函数。但是下划线去抖动的用法是:
var lazyLayout = _.debounce(calculateLayout, 300);
但就我而言,calculateLayout需要运行一些参数。在这种情况下如何通过他们?
更新:
样例calculateLayout功能:
var calculateLayout = function(a,b) {
console.log('a is ' + a + ' and b is ' + b);
}
debounce功能 不会传递给予的论点?只需致电lazyLayout('a', 'b')。
Answers:
您应该能够只将匿名函数用作第一个参数,然后在其中调用任何您喜欢的函数:
_.debounce(function(){
calculateLayout(20, 30);
}, 300);
您无需在中间使用匿名函数,当运行去抖动版本时,参数将自动传递给原始函数。
var debounceCalculate = _.debounce(calculateLayout, 300);
debounceCalculate(a,b);
作为优点,您不必预先对参数进行硬编码绑定
您可以尝试一下,如果好奇的话,请检查源
@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 debounceCalculate = _.debounce(calculateLayout, 300);就足够了
由于没有人在没有额外的var和的情况下编写了一个衬板function,所以我自己动手做:
_.debounce(calculateLayout, 300)(a, b);
防反跳功能会返回另一个函数,因此您可以在执行防反跳后立即调用它。