2010-09-04 12 views
14

Eventuali duplicati:
Jquery: how to sleep or delay?jQuery sleep function?

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); 

voglio dormire per 3 secondi qui

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

Questa domanda sembra essere un duplicato, ma quella duplicata non aiuterà l'OP. Penso che l'OP non sia consapevole del fatto che i metodi di blocco in JavaScript non funzionino e che cercherebbero un paradigma alternativo. –

+1

Non proprio un duplicato. Il contesto e la risposta sono diversi. – nobar

+0

È [questo post SO] (http://stackoverflow.com/questions/2939980/jquery-how-to-sleep-or-delay) cosa stai cercando? –

risposta

21

Utilizzare un javascript setTimeout().

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

EDIT:

Per utilizzare .delay(), sarà necessario aggiungere il codice in ritardo a una coda di animazione.

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

+1 ... Ho citato i tuoi esempi nella mia risposta :) Questi dovrebbero aiutare l'OP. –

11

Ricordare che JavaScript non è solo a thread singolo, ma condivide lo stesso thread con il rendering della pagina. Pertanto non ci sono funzioni di blocco integrate in JavaScript, perché ciò renderebbe l'interfaccia utente della pagina non risponde.

Si consiglia di utilizzare invece i timer, utilizzando setTimeout(), setInterval() o jQuery's delay(). Controlla @patrick's answer per un paio di esempi.