我有一个接受一些参数的函数。但使用下划线去抖是:
var lazyLayout = _.debounce(calculateLayout, 300);
但在我的情况下,calculateLayout
需要运行一些参数。在这种情况下如何通过它们?
更新:
示例calculateLayout
功能:
var calculateLayout = function(a,b) {
console.log('a is ' + a + ' and b is ' + b);
}
答案 0 :(得分:184)
您不需要中间的匿名功能,当您运行去抖动版时,参数会自动传递给原始函数。
var debounceCalculate = _.debounce(calculateLayout, 300);
debounceCalculate(a,b);
作为优势,您不必事先对参数进行硬编码绑定
你可以尝试一下,如果好奇,只需查看source
即可答案 1 :(得分:23)
您应该只能使用匿名函数作为第一个参数,然后调用它中的任何内容:
_.debounce(function(){
calculateLayout(20, 30);
}, 300);
答案 2 :(得分:5)
@ 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);
答案 3 :(得分:1)
一旦没有人在没有多余的var
和function
的情况下写出一根衬纸,我就会自己做:
_.debounce(calculateLayout, 300)(a, b);
去抖动功能会返回另一个函数,因此您可以在执行去抖动后立即调用它。