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);
}
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);
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
@ 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);
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é.