2010-06-03 10 views
5

Deseo llamar a la función con argumentos periódicamente.para llamar periódicamente a una función de Javascript

Intenté setTimeout("fnName()",timeinseconds); y está funcionando.

Pero cuando agrego un argumento no funciona. por ejemplo: setTimeout("fnName('arg')",timeinseconds);

+0

No creo que necesite '' – ant

+0

Sin argumentos, debería ser simplemente 'setTimeout (fnName, timeinseconds);' No puede hacer 'setTimeout (fnName(), timeinseconds);' como eso llamará al funcionar ahora –

+0

@Matthew Flaschen - Está entre comillas en la pregunta :) –

Respuesta

12

Se puede añadir una función anónima:

setTimeout(function() { fnName("Arg"); }, 1000); 
+0

vale la pena mencionar - esto se llama "currying" :) –

+0

@Yonatan nice, nunca he oído hablar de eso :) ¿Te refieres a poner la llamada en una función anónima? –

+0

setTimeout no está llamando a la función repetidamente, pero setInterval llamando repetidamente – shin

2

Usar una función anónima, así:

setTimeout(function() { fnName('arg'); }, time); 

En general, Nunca pasar una cadena a setTimeout() o setInterval() si puedes evitarlo, hay otros efectos secundarios además de ser una mala práctica ... ej. el alcance en el que se encuentra cuando se ejecuta.

Así como una nota lateral, si no hacía falta un argumento, es simplemente:

setTimeout(fnName, time); 
0

setTimeout acepta una expresión o un nombre función o un función anónima pero NO () operador.

() comenzará a ejecutar la función inmediatamente y los resultados en setTimeout aceptan un parámetro no válido.

Cuestiones relacionadas