2010-09-04 11 views
14

Duplicar posible:
Jquery: how to sleep or delay?jQuery función de suspensión?

var main = $('#main_content'); 
main.append("<img id=\"throbber\" src='/pre_config/css/images/throbber.gif' alt='Loading. Please wait.' />"); 
sleep(3000); 
$("#main_content").load("/pre_config/function.php?type="+type+"piz&count=1", successCallback); 

Quiero dormir durante 3 segundos aquí

sleep is not defined 
[Break on this error] sleep(3000); 
func2 
+1

Esta pregunta parece ser un duplicado, pero el duplicado no ayudará al OP. Creo que el OP no es consciente de que los métodos de bloqueo en JavaScript no funcionarán, y estaría buscando un paradigma alternativo. –

+1

Realmente no es un duplicado. El contexto y la respuesta es diferente. – nobar

+0

¿Está [esta publicación de SO] (http://stackoverflow.com/questions/2939980/jquery-how-to-sleep-or-delay) lo que está buscando? –

Respuesta

21

Use un javascript setTimeout().

setTimeout(function() { 
    $("#main_content").load("/pre_config/function.php?type="+type+"piz&count=1", successCallback); 
}, 3000); 

EDIT:

Para utilizar .delay(), que tendría que añadir el código de retraso a una cola de animación.

$("#main_content") 
.delay(3000) 
.queue(function(n) { 
    $(this).load("/pre_config/function.php?type="+type+"piz&count=1", successCallback) 
      .dequeue(); 
}); 
+0

+1 ... Cité tus ejemplos en mi respuesta :) Esto debería ayudar al OP. –

11

Tenga en cuenta que JavaScript no solo tiene una sola hebra, sino que comparte el mismo hilo con la representación de la página. Por lo tanto, no hay funciones de bloqueo incorporadas en JavaScript, porque eso haría que la IU de la página no responda.

Debería considerar usar temporizadores en su lugar, usando setTimeout(), setInterval(), o jQuery's delay(). Consulte @patrick's answer para ver un par de ejemplos.

Cuestiones relacionadas