Pregunta:
Fecha: 22-07-2016 21:41:49
(En Español)
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. Votos: 2 - Respuestas: 3 - Vistas: 13 Compartir en: Google Facebook Twitter LinkedIn Link
Delay en Javascript[Resuelta]
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. Votos: 2 - Respuestas: 3 - Vistas: 13 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 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. Votos: 5 - Link respuesta -
Fecha: 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. Votos: 1 - Link respuesta
-
Fecha: 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. Votos: 4 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
