2011-11-15 26 views
20

Si tengo una función que me gustaría que mi código js lo ejecute inmediatamente, pero después de la ejecución espere 2 segundos. ¿Cómo lograr esta lógica?Cómo esperar durante un período de tiempo después de ejecutar una función

(Nota: Es sólo la lógica inversa comparar con setTimeout(), ya setTimeout() primero esperar una cierta cantidad de tiempo a continuación, ejecutar la función)

+0

¿Puedes dar algunas líneas de tu código? Creo que estás buscando .delay() pero no estoy seguro por ahora. –

+0

Bueno, supongo que debes esperar 2 segundos antes de hacer otra cosa. Use setTimeout() para esa otra cosa, luego de que haya ejecutado su función ;-) –

+0

parece que desea esperar 2 segundos antes de regresar a la función de llamada. En caso afirmativo, antes de volver, use setTimeout() – Rohan

Respuesta

34

Sólo hay que poner el código dentro de una función anónima pasado a setTimeout.

p. Ej.

functionToRunFirst(); 
setTimeout(function() { 
    // rest of code here 
}, 2000); 
2

¿qué significa "esperar 2 segundos" significa.? ¿Quiere decir que quiere bloquear un retorno de la función durante 2 segundos?

si es así, no puede hacer eso. no hay función sleep() en JavaScript.

tendrá que sólo tiene que utilizar setTimeout()

3

usando setTimeout es una manera de hacerlo

function run() {  
    // run this code 

    setTimeout(afterTwoSeconds, 2000);  
} 

function afterTwoSeconds() {  
    // run this code two seconds after executing run. 
} 

// call run 
run(); 
1

No hay nada malo con las respuestas anteriores, pero de una manera diferente es:

$("#somethingThatDoesntExist").fadeTo(2000, 1, function() { 
    // two seconds later 
}); 
+1

Eso es bastante hacker de usted. ¿Por qué no '.delay()' si jquery es tu elección? –

+0

Porque no sabía sobre .delay(), ¡gracias! También pensé que OP había mencionado a jQuery, pero parece que estoy equivocado. –

+0

Él etiquetó su pregunta jquery. –

6

Creo que lo que Lo que estoy buscando es un método para suspender la ejecución del código hasta que se agote el tiempo de espera. Muchos programadores aficionados desean una construcción así, pero no existe en JavaScript. No es necesario. Para todos los propósitos en JavaScript, setTimeout y setInterval son soluciones candidatas perfectas.

Sin embargo, JavaScript es un lenguaje potente. Puedes construir tu propia construcción para abordar este problema. Eche un vistazo a blog post de Neil Mix. Con su enfoque puede crear una función de apagado automático que se puede utilizar en los siguientes términos (tenga en cuenta que en la actualidad sólo es compatible con JavaScript Firefox 1.7):

function mainGeneratorFunction() { 
    functionToRunFirst(); 
    yield sleep(2000); 
    //rest of the code 
} 

Sin embargo, para otros navegadores no se desespere. Puede usar un truco conocido como XHR Sleeping. En este enfoque, simplemente utiliza un XMLHttpRequest sincrónico para llamar a un script del lado del servidor como php, que luego duerme durante el tiempo especificado y lo devuelve después de que se active. El código JavaScript es el siguiente: la función del sueño

function sleep(microseconds) { 
    var request = new XMLHttpRequest(); 
    request.open("GET", "sleep.php?time=" + microseconds, false); 
    request.send(); 
} 

functionToRunFirst(); 
sleep(2000000); 
//rest of the code 

El php es el siguiente:

<?php 
    usleep($_GET["time"]); 
?> 
1

dado algo de relleno fuera de su parte, esto se debe ejecutar 5 veces con medio segundo temporizador

var counter = 0; 
var arrayOfPicture = []; //fill this out 

function gifSimulator() { 

    //use the counter as an index in the array, and change the image source of your element with that. 


    if (counter < 5) { 

     setTimeout(function() { 

      counter++; 

      gifSimlulator(); 

     }, 500); //lets wait half a second 
    } 
} 
0

No sé por qué ustedes van tanto. Creo que podemos hacerlo usando el objeto Date. Primero tome el valor de la fecha y use la función setInterval para esperar hasta que tengamos el intervalo especificado (obtenga una nueva fecha y verifique la diferencia). Una vez que logramos restablecer la función de intervalo y continuar con su código, luego de eso, puede ejecutarse.

Cuestiones relacionadas