JavaScript sleep / wait перед продолжением [дубликат]



этот вопрос уже есть ответ здесь:



у меня есть код JavaScript, который мне нужно добавить функцию сна/ожидания. Код, который я запускаю, уже находится в функции, например:



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


Я слышал, что возможное решение может включить



setTimeout


но я не уверен, как использовать его в этом случае.



Я не могу использовать PHP, так как мой сервер не поддерживает его, Хотя использование jQuery было бы прекрасно.

603   1  

1 ответ:

JS не имеет функции сна, он имеет setTimeout () или setInterval () функции.

если вы можете переместить код, который вам нужно запустить после паузы в setTimeout() обратного вызова, вы можете сделать что-то вроде этого:

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

смотрите пример здесь:http://jsfiddle.net/9LZQp/

это не остановит выполнение вашего скрипта, но пока setTimeout() - это асинхронная функция, этот код

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

напечатает это в консоли:

HELLO
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 на Вашей странице, но в зависимости от реализации браузера, возможно, сделает страницу полностью невосприимчивой и, возможно, сделает весь браузер невосприимчивым. Другими словами, это почти всегда неправильно.

Comments

    Ничего не найдено.