Cómo pasar el parámetro mientras se llama a una función usando setInterval. a saber. setInterval('funca(10,3)',500);
es incorrecto.Pase los parámetros en la función setInterval
Respuesta
Necesita crear una función anónima para que la función real no se ejecute de inmediato.
setInterval(function() { funca(10,3); }, 500);
Agregar como parámetros a setInterval:
setInterval(funca, 500, 10, 3);
La sintaxis en su pregunta utiliza eval, que no se recomienda la práctica.
Esto funciona setInterval("foo(bar)",int,lang);
.... Jon Kleiser me conducen a la respuesta.
Puede pasar el parámetro (s) como una propiedad del objeto función, no como un parámetro:
var f = this.someFunction; //use 'this' if called from class
f.parameter1 = obj;
f.parameter2 = this;
f.parameter3 = whatever;
setInterval(f, 1000);
Luego, en función de su someFunction
, usted tendrá acceso a los parámetros. Esto es particularmente útil en clases donde el alcance va al espacio global automáticamente y usted pierde referencias a la clase que llamó setInterval para comenzar. Con este enfoque, "parameter2" en "someFunction", en el ejemplo anterior, tendrá el alcance correcto.
Puede acceder por Classname.prototype.someFunction.parameter1 – JoaquinG
Agregar parámetros a un objeto o función puede hacer que el compilador se ralentice, ya que tendrá que reconstruir su representación de código nativo del objeto (por ejemplo, si esto se hizo en un loop) así que ten cuidado. – mattdlockyer
Citando los argumentos debe ser lo suficientemente:
OK --> reloadIntervalID = window.setInterval("reloadSeries('"+param2Pass+"')" , 5000)
KO --> reloadIntervalID = window.setInterval("reloadSeries("+param2Pass+")" , 5000)
Nota de la comilla simple '
para cada argumento.
Probado con IE8, Chrome y Firefox
Usar eval es una práctica terrible. El uso de la función anónima es mucho mejor. – SuperIRis
ahora con ES5, se unen método de la función prototipo:
setInterval(funca.bind(null,10,3),500);
Esta es la mejor respuesta, sin embargo, puede tener un comportamiento inesperado dependiendo de la función. p.ej. '' console.log.bind (null) ("Log me") '' lanzará '' invocación ilegal'', pero '' console.log.bind (console) ("Log me") '' funcionará como se esperaba . Esto se debe a que '' console.log'' requiere '' console'' como '' this'' arg. – Indy
De lejos, la mejor respuesta. Delgado y limpio. ¡Muchas gracias! – Tobi
¡Muy limpio y eficiente! – contactmatt
setInterval(function(a,b,c){
console.log(a + b +c);
}, 500, [1],[2],[3]);
//note the console will not print 6
// rather it will print 123 in every 500 ms
// because arguments are passed as array not as numbers
// tested in node.js ie 11 and chrome
Respuesta mejor explicada. –
Entonces, ¿por qué pasar los argumentos como matrices? Este detalle ni siquiera se relaciona con la pregunta. – Xufox
Otra solución consiste en pasar su función como esa (si tienes variables dinámicas): setInterval ('funca (' + x + ',' + y + ')', 500);
Puede usar una biblioteca llamada subrayado js. Da una buena envoltura en el método bind y es una sintaxis mucho más limpia también. Permitiéndole ejecutar la función en el alcance especificado.
_.bind (función, alcance, * argumentos)
setInterval(function,milliseconds,param1,param2,...)
Adición parenthesizes después función anónima parece hacer el truco:
function clock() {
n = 10;
while(--n) {
setInterval(function() {
console.log(n);
}(n), 1000);
}
}
Su código ejecutará la función pero no le aplicará la demora, puede eliminar las líneas que rodean 'console.log (n)' y obtendrá exactamente el mismo resultado. –
Sé que este tema es tan viejo, pero aquí está mi solución sobre pasar parámetros en la función setInterval
.
HTML:
var fiveMinutes = 60 * 2;
var display = document.querySelector('#timer');
startTimer(fiveMinutes, display);
JavaScript:
function startTimer(duration, display) {
var timer = duration,
minutes, seconds;
setInterval(function() {
minutes = parseInt(timer/60, 10);
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.textContent = minutes + ":" + seconds;
--timer; // put boolean value for minus values.
}, 1000);
}
Con mucho, la respuesta más práctica es la dada por tvanfosson, todo lo que puedo hacer es darle una versión actualizada con ES6:
setInterval(()=>{ funca(10,3); }, 500);
¿Estás diciendo que() => {} es la nueva forma de ES6 de reemplazar function() {}? Interesante. Primero, pensé que los cohetes eran pasados. Y, a menos que esta sintaxis tenga otros usos comunes, es muy, muy extraño. Veo que son "flechas gordas". Aún así, extraño. Supongo que a alguien le gusta y es una cuestión de opinión. –
- 1. jQuery's .click - pase los parámetros a la función de usuario
- 2. Pase los parámetros en Link_to
- 3. Función de envoltura en PowerShell: Pase los parámetros restantes
- 4. pase de parámetros a la función de cierre en javascript
- 5. Pase los parámetros al objeto XMLHttpRequest
- 6. pase los parámetros a php con shell
- 7. La función no se define en setInterval
- 8. CoffeeScript, pase varios parámetros, incluida una función anónima
- 9. Pase múltiples parámetros opcionales a una función C#
- 10. setInterval() única función en ejecución una vez
- 11. Node.js "requieren" la función y los parámetros
- 12. Buscar los parámetros de la función Dll
- 13. Pase los parámetros a Spring MethodInvokingFactoryBean lista de argumentos
- 14. Pase los parámetros del script bash a subprocesar sin cambios
- 15. Pase la matriz de datos a la función jQuery
- 16. PHP: Pase la función anónima como argumento
- 17. muestra los parámetros de función en vim
- 18. jQuery - Pase el elemento a la función
- 19. función de pase como puntero de función
- 20. Pase diferentes parámetros a un IBAction
- 21. JavaScript setTimeout setInterval dentro de una función
- 22. Cómo utilizar la función setInterval dentro del ciclo for
- 23. javascript setInterval
- 24. Pase directamente parámetros a la secuencia de comandos pbs
- 25. ¿Cómo usar setInterval en PHP?
- 26. Plantillas variables sin los parámetros de función
- 27. Pase por referencia en C
- 28. Parámetros de la función - Python
- 29. Parámetros de función en PowerShell
- 30. Clojure: Pase args opcionales 'expandidos' a la función
¿Qué debería ser para el parámetro dinámico? – rony36
@ rony36 - es probable que desee tener una función que cree el temporizador de intervalo para usted. Pase el parámetro a la función para que su valor sea capturado en el cierre de la función y retenido para cuando el temporizador expire. 'function createInterval (f, dynamicParameter, interval) {setInterval (function() {f (dynamicParameter);}, interval); } 'Entonces llámalo como' createInterval (funca, dynamicValue, 500); 'Obviamente puedes extender esto para más de un parámetro. Y, por favor, use nombres de variables más descriptivos. :) – tvanfosson
@tvanfosson - ¿Cómo borrar este tipo de intervalo? – Yong