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

Gan*_*row 57 javascript underscore.js

我有一个函数,它接受了一些参数.但是下划线去抖的用法是:

var lazyLayout = _.debounce(calculateLayout, 300);
Run Code Online (Sandbox Code Playgroud)

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

更新:

示例calculateLayout功能:

var calculateLayout = function(a,b) {
  console.log('a is ' + a + ' and b is ' + b);
}
Run Code Online (Sandbox Code Playgroud)

Jai*_*udo 222

您不需要中间的匿名函数,当您运行去抖动版本时,参数将自动传递给原始函数.

  var debounceCalculate = _.debounce(calculateLayout, 300);
  debounceCalculate(a,b);
Run Code Online (Sandbox Code Playgroud)

作为优势,您不必事先对参数进行硬编码绑定

你可以尝试一下,如果好奇,只需查看来源

  • 如果你检查`_.debounce`的源代码,你会注意到它返回的是一个`function`。这就是函数式编程的力量,Js 包含了其中的一部分:) (2认同)

Max*_*ens 28

您应该只能使用匿名函数作为第一个参数,然后在其中调用您喜欢的任何内容:

_.debounce(function(){
    calculateLayout(20, 30);
}, 300);
Run Code Online (Sandbox Code Playgroud)

  • 此外,这种方法会多次调用内部函数,只是在每次调用时应用去抖动,而不是单次调用,这是所希望的.[本网站解释了所有内容](https://css-tricks.com/debouncing-throttling-explained-examples/). (2认同)

hua*_*eng 6

@杰米的答案更好.

我将保留原来的答案如下,尽管如果你熟悉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);
Run Code Online (Sandbox Code Playgroud)

  • 呃...`var debounceCalculate = _.debounce(calculateLayout,300);`就足够了 (3认同)