Ответ 1
JS не имеет функции сна, он имеет setTimeout() или setInterval().
Если вы можете переместить код, который нужно запустить после паузы в обратном вызове setTimeout()
, вы можете сделать что-то вроде этого:
//code before the pause
setTimeout(function(){
//do what you need here
}, 2000);
см. пример здесь: http://jsfiddle.net/9LZQp/
Это не остановит выполнение вашего script, но пока setTimeout()
является асинхронной функцией, этот код
console.log("HELLO");
setTimeout(function(){
console.log("THIS IS");
}, 2000);
console.log("DOG");
напечатает это в консоли:
HELLO
DOG
THIS IS
(обратите внимание, что DOG печатается до ЭТО)
Вы можете использовать следующий код для симуляции сна в течение коротких периодов времени:
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/
обратите внимание, что этот код будет поддерживать ваш script занят за n миллисекунд. Это не только остановит выполнение Javascript на вашей странице, но, в зависимости от реализации браузера, возможно, страница полностью не отвечает на запросы и, возможно, сделает весь браузер неактивным. Другими словами, это почти всегда неправильно.