Имам код в JavaScript, към който трябва да добавя функция за заспиване/изчакване. Кодът, който изпълнявам, вече е във функция, напр:
function myFunction(time)
{
alert('time starts now');
//code to make the program wait before continuing
alert('time is up')
}
Чувал съм, че възможното решение може да включва
setTimeout
но не съм сигурен как да го използвам в този случай.
Не мога да използвам PHP, тъй като сървърът ми не го поддържа, въпреки че използването на jQuery би било добре.
JS не разполага с функция за заспиване, а с функциите 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
(обърнете внимание, че Дог се отпечатва преди Това е)
Можете да използвате следния код, за да симулирате сън за кратки периоди от време:
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 на вашата страница, но в зависимост от имплементацията на браузъра може да направи страницата напълно неотзивчива и евентуално да направи целия браузър неотзивчив. С други думи, това почти винаги е погрешно.