Mam kod JavaScript, do którego muszę dodać funkcję sleep/wait. Kod, który uruchamiam jest już w funkcji, np:
function myFunction(time)
{
alert('time starts now');
//code to make the program wait before continuing
alert('time is up')
}
Słyszałem, że możliwe rozwiązanie może zawierać
setTimeout
ale nie jestem pewien, jak go użyć w tym przypadku.
Nie mogę użyć PHP, ponieważ mój serwer go nie obsługuje, chociaż użycie jQuery byłoby w porządku.
JS nie posiada funkcji sleep, posiada za to funkcje setTimeout() lub setInterval().
Jeśli możesz przenieść kod, który musisz uruchomić po pauzie do wywołania zwrotnego setTimeout()
, możesz zrobić coś takiego:
//code before the pause
setTimeout(function(){
//do what you need here
}, 2000);
zobacz przykład tutaj :
To nie zatrzyma wykonywania twojego skryptu, ale tak długo jak setTimeout()
jest funkcją asynchroniczną, ten kod
console.log("HELLO");
setTimeout(function(){
console.log("THIS IS");
}, 2000);
console.log("DOG");
wydrukuje to w konsoli:
HELLO
DOG
THIS IS
(zauważ, że DOG jest wypisany przed THIS IS)
Możesz użyć poniższego kodu do symulowania uśpienia przez krótki okres czasu:
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
teraz, jeśli chcesz spać przez 1 sekundę, po prostu użyj:
sleep(1000);
przykład: http://jsfiddle.net/HrJku/1/
Proszę zauważyć, że ten kod spowoduje, że skrypt będzie zajęty przez n milisekund. To nie tylko zatrzyma wykonywanie skryptów Javascript na twojej stronie, ale w zależności od implementacji przeglądarki, może spowodować, że strona stanie się całkowicie nieresponsywna, a być może cała przeglądarka przestanie reagować. Innymi słowy jest to prawie zawsze zła rzecz do zrobienia.