web-dev-qa-db-fra.com

Fonction rebounce avec soulignement des arguments

J'ai une fonction qui prend en compte certains arguments. Mais l'utilisation du soulignement de soulignement est:

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

Mais dans mon cas, calculateLayout a besoin d'arguments pour s'exécuter. Comment puis-je les passer dans ce cas?

Mettre à jour :

Exemple de fonction calculateLayout:

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

Vous devriez pouvoir simplement utiliser une fonction anonyme comme premier argument, puis appeler ce que vous voulez dans celui-ci:

_.debounce(function(){
    calculateLayout(20, 30);
}, 300);
21
Max Girkens

Vous n'avez pas besoin d'une fonction anonyme au milieu, arguments seront automatiquement passés à la fonction d'origine lorsque vous exécuterez la version réduite

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

En tant qu'avantage, vous n'avez pas à lier les arguments en dur 

Vous pouvez l’essayer et, si vous êtes curieux, vérifiez la source

168
Jaime Agudo

@ La réponse de Jamie est meilleure.

Je garderai ma réponse originale comme ci-dessous, même s'il serait préférable d'utiliser la réponse de Jamie si vous connaissez 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);
6
huan feng

Dès que personne n'aura écrit le texte sans var et function supplémentaire, je le ferai moi-même:

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

La fonction debounce renvoie une autre fonction, vous pouvez donc l'appeler juste après que debounce soit exécuté.

0
Max Zavernutiy