New question

Question:

Date: 22-07-2016 21:41:49 (In Spanish)

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.
Tags: Javascript - Javascript Array - Question 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