Bueno, eso.
Necesito una ejecutar una función reiteradas veces, las que yo queira, y que entre cada iteración pueda definir el tiempo real entra cada repetición, digamos, en milisegundo.
Alguien me puede orientar ?
Saludos y Gracias.
| ||||
Ejecutar reiteradas vences una funcion con distintos delays Bueno, eso. Necesito una ejecutar una función reiteradas veces, las que yo queira, y que entre cada iteración pueda definir el tiempo real entra cada repetición, digamos, en milisegundo. Alguien me puede orientar ? Saludos y Gracias.
__________________ | Cabeza De Raton | |
| ||||
Re: Ejecutar reiteradas vences una funcion con distintos delays Gracias Caricatos. Es una función recursiva entonces.
__________________ | Cabeza De Raton | |
| ||||
Re: Ejecutar reiteradas vences una funcion con distintos delays ` ¡No, no es recurrente (o recursiva)! simplemente suele usarse para hacer varias llamadas a una misma función, en muchas ocasiones para efectos de movimiento, y lo puede aparentar, pero no hay recursión. Saludos
__________________ Por favor: No hagan preguntas de temas de foros en mensajes privados... no las respondo |
| ||||
Re: Ejecutar reiteradas vences una funcion con distintos delays Caricatos ... recursiva no es cuanto una función se llama a si misma ?. Por otro lado, no importa mucho ahora que es lo que entiendo yo por recursividad. En estos días lo implementé de una manera distinta. Algo asi ...
Código:
Más allá de algún error de sintaxis, lo que hago con esto es disparar 10 timers donde el primero dura 1 segundo y el ultimo 10. Pero los 10 se disparan al mismo tiempo, entonces puedo deducir que entre cada timer hay un segundo de diferencia, o sea, la función recurrente() la termino llamando 10 veces cada un segundo.for (i=0; i<10; i++) { setTimeout("recurrente()", i*1000); } Si todo esto es correcto, necesito saber lo siguiente: (1) Gasto mucha memoria al hacer esto ?. Pensemos que yo lo quiero, por ahí, para 500 o 1000 iteraciones. (2) Cuanto mas recurso gasta este script a diferencia al que ha implemento Caricatos (arriba ? (3) Cuan preciso es ? (4) Eventos externos tipo onMouseDown, onClick, etc; afectan al funcionamiento ? (5) Hay alguna forma de hacerlo mejor ? Saludos y Graciasa.
__________________ | Cabeza De Raton | |
| ||||
Re: Ejecutar reiteradas vences una funcion con distintos delays Hola: Yo personalmente por tradición uso la manera que te comenta caricatos, es decir, llamar al setTimeout dentro de la función. En respuesta a tus preguntas: Cita: Bueno, yo de memoria poco me preocupo en los setTimeouts. No creo que haya diferencia entre llamarlos todos de golpe y llamarlos poco a poco. Supongo que el gasto de memoria es mayor (o más instantáneo) cuando se llaman a todos los setTimeout a la vez, como es tu método.
Iniciado por Calisco (1) Gasto mucha memoria al hacer esto ?. Pensemos que yo lo quiero, por ahí, para 500 o 1000 iteraciones. Cita: Yo diría, casi con total seguridad, que hacer un bucle de 1000 iteraciones estableciendo un setTimeout ralentiza mucho más que hacer una llamada, y después establecer el setTimeout, para que luego esa segunda llamada establezca otro setTimeout (con un descanso).
Iniciado por Calisco (2) Cuanto mas recurso gasta este script a diferencia al que ha implemento Caricatos (arriba ? El método de caricatos tiene la ventaja de que se puede cancelar dentro de la función si ocurre alguna condición (por ejemplo si un contador ha llegado a un número que no deseamos), o incluso llamarlo con diferentes lapsos de tiempo dependiendo de qué condiciones. Cita: También, con casi ninguna duda, es que el más preciso es el del for inicial. Teniendo en cuenta que tu funcion x() tarda en ejecutarse t milisegundos, si hacemos una llamada y seteamos primer setTimeout, se establecerá con un retardo de t milisegundos. Mientras que si los seteamos todos desde el principio, quedan establecidos ya, no hay líneas que ejecutar antes del setTimeout. Ésto no se nota si x() es rápida, pero si x() tarda en ejecutarse 5sgs con la llamada dentro de la función lo que pasaría es:
Iniciado por Calisco (3) Cuan preciso es ? 1ª llamada: Ejecución de x(): sg: 0 - 5. Establecimiento de setTimeout a 10sg. 2ª llamada: Ejecución de x(): sg: 15 - 20. Establecimiento de setTimeout a 10sg. 3ª llamada: Ejecución de x(): sg: 30 - 35. Establecimiento de setTimeout a 1sg. ... Y con el for creación de bucles...: Establecemos todas las llamadas en el segundo 0, 10, 20... 1ª llamada: Ejecución de x(): sg: 0 - 5. 2ª llamada: Ejecución de x(): sg: 10 - 15. Establecimiento de setTimeout a 1sg. 3ª llamada: Ejecución de x(): sg: 20 - 25. Establecimiento de setTimeout a 1sg. Aunque todo esto es teórico, y habría que probarlo, aunque lo veo difícil. Lo que habría que saber es si el navegador cuenta los segundos mientras está ocupado ejecutando otras cosas. Yo diría que no los cuenta, en ese caso los dos scripts actuarían igual. Cita: En realidad no sé a qué te refieres, supongo que es el mismo problema de la precisión. Un ejemplo bastaría para entenderlo (y para hallar solución, supongo).
Iniciado por Calisco (4) Eventos externos tipo onMouseDown, onClick, etc; afectan al funcionamiento ? Cita: A mi no se me ocurre una manera de llamar a una función de esa forma, bueno sí, con un setInterval y cortando el intervalo cuando sea necesario dentro de la función, pero no valdría si hay que modificar variables pasadas por argumento (haciendo esas variables globales sí, pero no siempre es cómodo).
Iniciado por Calisco (5) Hay alguna forma de hacerlo mejor ? Bueno, espero que aclaremos ideas. Un saludo.
__________________ - Haz preguntas inteligentes, y obtendrás más y mejores respuestas. - Antes de postearlo Inténtalo y Búscalo. - Escribe correctamente tus mensajes. |
| ||||
Re: Ejecutar reiteradas vences una funcion con distintos delays Hola: Para que se tratase de recursión recurrente debería de hacer una llamada a recurrente o setTimeout a setTimeout, pero se trata de algo mucho más complejo, porque los procesos recursivos suelen "apilar" el estado del propio método recursivo, antes de la recursión, desapilándolas luego, pero estas llamadas son independientes... un par de casos de estudio fáciles son los factoriales y los fibonacci (las torres de hanoi son un poco más complejillas...) Con los sistemas de temporización, se pueden cancelar/detener siempre que sean asignados a una variable y luego poner clearTimeout/clearInterval(variable) Un ejemplo con Interval... var contador = 0; function segundero() { if (contador++ == 10) clearInterval(temporizador); // el resto del código... } var temporizador = setInterval("segundero()", 1000); Sobre el tema de la memoria, es preferible no abusar de estos métodos, aunque creo que para tus objetivos no deberías preocuparte... Por cierto, empecé a escribir un artículo sobre este tema, puedes verlo aquí: Controlar los tiempos Saludos
__________________ Por favor: No hagan preguntas de temas de foros en mensajes privados... no las respondo |
| ||||
Re: Ejecutar reiteradas vences una funcion con distintos delays Ok, Gracias compas ....
__________________ | Cabeza De Raton | |