Question:
Date: 22-07-2016 21:41:49
(In Spanish)
lo que quiero hacer es poner un delay de 10 segundos antes de que cada iteracion del bucle for.
Amigos muchas gracias por su ayuda. Votes: 2 - Answers: 3 - Views: 13 Share on: Google Facebook Twitter LinkedIn Link
Delay en Javascript[Resolved]
Buenas, mi pregunta es la siguiente. ¿Hay alguna forma de hacer un delay en javascript antes de que ejecute la siguiete línea de código?. Tengo el siguiente codigo:function showPosition() { var i=latitud1.length; for(j=0;j<=i;j++){ console.log("latitud: "+latitud1[j]+" longitud: "+longitud1[j]); console.log("valor de i es:"+j); // window.alert("latitud: "+position.lat+" longitud: "+position.lng); var variableLongitud = longitud1[j]; var variableLatitud =latitud1[j]; var Salida= document.getElementById('Salida').value; $.ajax({ type: 'POST', url: 'guardarCoordenadas.php', dataType: 'html', data: {'latitud':variableLatitud, 'longitud':variableLongitud,'Salida':Salida}, success: function(data) { console.log('datos enviados a php correctamente!' + data); } }); } }
lo que quiero hacer es poner un delay de 10 segundos antes de que cada iteracion del bucle for.
Amigos muchas gracias por su ayuda. Votes: 2 - Answers: 3 - Views: 13 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 23-07-2016 01:10:57 Hola Juan.
La iteración (repetición) de una función javascript llamada cada 10 segundos (10000 milisegundos) se realiza mediante el método setInterval ()
(su documentación y ejemplos en http://www.w3schools.com/jsref/met_win_setinterval.asp)
La forma más sencilla para tu código sería añadir como primera línea:
setInterval(function(){ showPosition() }, 10000);
Si lo que quieres es que la primera llamada llegue con el retraso mencionado (una sola vez) acudiríamos a la función setTimeout ()
Nos comentas. Votes: 5 - Link answer -
Date: 23-07-2016 05:42:55 Pero no quiero ejecutar la función cada 10 segundos, si no que cada vez que de una vuelta en el for se quede 10 segundos sin hacer nada. Votes: 1 - Link answer
-
Date: 23-07-2016 07:43:59 No se si te entiendo bien.
El for se ejecuta tantas veces como valor numérico tiene var i=latitud1.length;
¿Lo que quieres es que demore 10 segundos desde la lectura de cada valor [j] (cada vez, del valor 0 al 1, del 1 al 2, etc.)?
Si este es el caso, te dejo un código simplificado que creo te será muy fácil adaptarlo:
<!DOCTYPE html> <html> <body> <p>Hola Mundo</p> <p id="demo"></p> <script> var i= 10; var j = 0; function showPosition() { if(j<i) { var demo = document.getElementById('demo'); demo.innerHTML ='El valor de j es '+j; j++; setTimeout(function(){ showPosition() }, 5000); //reducido en este caso a 5 segundos } }; window.addEventListener("load", showPosition, false); </script> </body> </html>
Unas pequeñas grandes observaciones:
- Las variables [i] y [j] tienen que ser globales por lo que van antes de toda función;
- El for es cambiado por un if;
- El valor de [j] es incrementado dentro del if (al final para no interferir en la lectura, pero antes de setTimeout();
- setTimeout() va como última línea antes de cerrar el if.
Cuando el valor [j] en el ejemplo llegue a 9, finalizará la ejecución del script (10 valores, desde el 0 al 9, ambos incluidos).
La última línea (window.addEventListener("load", showPosition, false);) puedes eliminarla ya que imagino que llamas a la función showPosition() desde otro lugar y de otra forma. Votes: 4 - Link answer
To actively participate in the community first must authenticate, enter the system.Sign In