У меня есть код JavaScript, в который нужно добавить функцию sleep/wait. Код, который я выполняю, уже находится в функции, например:
function myFunction(time)
{
alert('time starts now');
//code to make the program wait before continuing
alert('time is up')
}
Я слышал, что возможное решение может включать
setTimeout
но я не уверен, как использовать его в данном случае.
Я не могу использовать PHP, так как мой сервер не поддерживает его, хотя использование jQuery было бы прекрасно.
В JS нет функции sleep, есть функции setTimeout() или setInterval().
Если вы можете переместить код, который нужно выполнить после паузы, в обратный вызов setTimeout()
, вы можете сделать что-то вроде этого:
//code before the pause
setTimeout(function(){
//do what you need here
}, 2000);
см. пример здесь:
Это не остановит выполнение вашего скрипта, но до тех пор, пока setTimeout()
является асинхронной функцией, этот код
console.log("HELLO");
setTimeout(function(){
console.log("THIS IS");
}, 2000);
console.log("DOG");
выведет это в консоль:
HELLO
DOG
THIS IS
(обратите внимание, что DOG выводится перед THIS IS)
Вы можете использовать следующий код для имитации сна на короткие промежутки времени:
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
Теперь, если вы хотите спать в течение 1 секунды, просто используйте:
sleep(1000);
пример: http://jsfiddle.net/HrJku/1/
Пожалуйста, обратите внимание, что этот код будет держать ваш скрипт занятым в течение n миллисекунд. Это не только остановит выполнение Javascript на вашей странице, но и, в зависимости от реализации браузера, может сделать страницу полностью невосприимчивой, а возможно, и весь браузер невосприимчивым. Другими словами, это почти всегда неправильное решение.