Debounce function with args underscore

后端 未结 4 1606
离开以前
离开以前 2021-01-31 06:51

I\'ve got a function which takes in some arguments. But usage of underscore debounce is :

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

Bu

相关标签:
4条回答
  • 2021-01-31 07:26

    You should be able to just use an anonymous function as the first argument, then call whatever you like in it:

    _.debounce(function(){
        calculateLayout(20, 30);
    }, 300);
    
    0 讨论(0)
  • 2021-01-31 07:32

    @Jamie's answer is better.

    I'll keep my original answer as below, although the it should be better to use Jamie's answer if you are familiar with JS:

    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);
    
    0 讨论(0)
  • 2021-01-31 07:38

    Since nobody has written the one liner without extra var and function, I'll do it myself:

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

    Debounce function returns another function, so you can call it just afterwards debounce is executed.

    0 讨论(0)
  • 2021-01-31 07:43

    You don't need an anonymous function in the middle, arguments will automatically be passed to the original function when you run the debounced version.

      var debounceCalculate = _.debounce(calculateLayout, 300);
      debounceCalculate(a,b);
    

    As an advantage you don't have to hardcode-bind the arguments in advance

    You can try it and if curious just check the source

    0 讨论(0)
提交回复
热议问题