使用args下划线的去抖动功能

时间:2014-05-25 17:28:33

标签: javascript underscore.js

我有一个接受一些参数的函数。但使用下划线去抖是:

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

但在我的情况下,calculateLayout需要运行一些参数。在这种情况下如何通过它们?

更新:

示例calculateLayout功能:

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

4 个答案:

答案 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)

一旦没有人在没有多余的varfunction的情况下写出一根衬纸,我就会自己做:

_.debounce(calculateLayout, 300)(a, b);

去抖动功能会返回另一个函数,因此您可以在执行去抖动后立即调用它。