Veuillez me conseiller sur la façon de passer des paramètres dans une fonction appelée à l'aide de setInterval
.
Mon exemple setInterval(funca(10,3), 500);
est incorrecte.
Veuillez me conseiller sur la façon de passer des paramètres dans une fonction appelée à l'aide de setInterval
.
Mon exemple setInterval(funca(10,3), 500);
est incorrecte.
@rony36 - vous voulez probablement avoir une fonction qui crée le minuteur d'intervalle pour vous. Passez le paramètre à la fonction pour que sa valeur soit capturée dans la fermeture de la fonction et conservée pour le moment où le minuteur expire. function createInterval(f,dynamicParameter,interval) { setInterval(function() { f(dynamicParameter); }, interval); }
Puis l'appeler comme createInterval(funca,dynamicValue,500);
Bien entendu, vous pouvez étendre ce principe à plusieurs paramètres. Et, s'il vous plaît, utilisez des noms de variables plus descriptifs :)
@tvanfosson : réponse géniale ! Savez-vous comment effacer le formulaire d'intervalle sur fonction funca
?
Ajoutez-les comme paramètres à setInterval :
setInterval(funca, 500, 10, 3);
La syntaxe dans votre question utilise eval, qui n'est pas pratique recommandée .
C'est la meilleure réponse, mais elle peut avoir un comportement inattendu en fonction de la fonction, par ex. console.log.bind(null)("Log me")
jettera Illegal invocation
mais console.log.bind(console)("Log me")
fonctionnera comme prévu. Cela est dû au fait que console.log
nécessite console
comme le this
arg.
Vous pouvez passer le(s) paramètre(s) comme une propriété de l'objet fonction, et non comme un paramètre :
var f = this.someFunction; //use 'this' if called from class
f.parameter1 = obj;
f.parameter2 = this;
f.parameter3 = whatever;
setInterval(f, 1000);
Ensuite, dans votre fonction someFunction
vous aurez accès aux paramètres. Ceci est particulièrement utile dans les classes où la portée passe automatiquement à l'espace global et où vous perdez les références à la classe qui a appelé setInterval pour commencer. Avec cette approche, "parameter2" dans "someFunction", dans l'exemple ci-dessus, aura la bonne portée.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
4 votes
Syntaxe :
.setInterval(func, delay[, param1, param2, ...]);