JavaScript sleep / wait prima di continuare

Ho un codice JavaScript che ho bisogno di aggiungere una funzione sleep / wait a. Il codice che sto utilizzando è già in una funzione, ad esempio:

function myFunction(time) { alert('time starts now'); //code to make the program wait before continuing alert('time is up') } 

Ho sentito che una ansible soluzione potrebbe includere

 setTimeout 

ma non sono sicuro di come usarlo in questo caso.

Non posso usare PHP, dato che il mio server non lo supporta, anche se l’uso di jQuery andrebbe bene.

JS non ha una funzione sleep, ha funzioni setTimeout () o setInterval () .

Se puoi spostare il codice che devi eseguire dopo la pausa nel callback setTimeout() , puoi fare qualcosa di simile a questo:

 //code before the pause setTimeout(function(){ //do what you need here }, 2000); 

vedere l’esempio qui: http://jsfiddle.net/9LZQp/

Questo non fermerà l’esecuzione del tuo script, ma finché setTimeout() è una funzione asincrona, questo codice

 console.log("HELLO"); setTimeout(function(){ console.log("THIS IS"); }, 2000); console.log("DOG"); 

stamperà questo nella console:

 HELLO DOG THIS IS 

(nota che DOG è stampato prima di QUESTO È )


È ansible utilizzare il seguente codice per simulare un sonno per brevi periodi di tempo:

 function sleep(milliseconds) { var start = new Date().getTime(); for (var i = 0; i < 1e7; i++) { if ((new Date().getTime() - start) > milliseconds){ break; } } } 

ora, se vuoi dormire per 1 secondo, usa semplicemente:

 sleep(1000); 

esempio: http://jsfiddle.net/HrJku/1/

per favore nota che questo codice manterrà il tuo script occupato per n millisecondi . Questo non solo fermerà l’esecuzione di Javascript sulla tua pagina, ma a seconda dell’implementazione del browser, potrebbe rendere la pagina completamente non retriggers, e probabilmente rendere l’intero browser non risponde . In altre parole, questa è quasi sempre la cosa sbagliata da fare.