Сон в javascript (или аналоге)

Как мне подождать 1 секунду перед выполнением следующей функции?

Например, как в php есть sleep ()


person wait    schedule 22.07.2011    source источник
comment
возможный дубликат Есть ли в javascript функция сна?   -  person lonesomeday    schedule 22.07.2011
comment
Точный дубликат Что такое версия sleep () для JavaScript?   -  person Dan Dascalescu    schedule 07.10.2016


Ответы (3)


setTimeout(f, 1000);

Установите тайм-аут для запуска функции через 1000 миллисекунд

window.setTimeout [docs]

window.setTimeout [spec] < / sup>

window.setTimeout [темная сторона] < / em>

Как упоминалось в комментариях. JavaScript является однопоточным, и этот поток используется совместно с потоком пользовательского интерфейса браузера.

Итак, вызывая функцию блокировки, например sleep. Вы бы заблокировали только поток. Это также означает, что клиент не может взаимодействовать со страницей, пока она блокируется.

См. Программирование, управляемое событиями [wiki] < / a> статья для получения дополнительной информации

person Raynos    schedule 22.07.2011
comment
Чтобы расширить это: вам не нужно что-то вроде сна, потому что вы не хотите, чтобы браузер перестал работать, пока вы ждете. Поскольку Javascript управляется событиями, вам необходимо вернуть управление браузеру и сказать ему, чтобы он разбудил вас по прошествии необходимого времени. - person Colin Fine; 22.07.2011

Несмотря на то, что setTimeout поддерживается во всех основных браузерах, я предпочитаю использовать библиотеку javascript, потому что обычно выполняется больше js, чем просто вызывает функцию тайм-аута. В ЮИ это:

YAHOO.lang.later(1000, this, function() {
...
});

Дополнительную информацию см. здесь.

person George P    schedule 22.07.2011
comment
Почему я предпочитаю использовать для этого библиотеку. Было бы смешно включать библиотеку только для этого. - person Raynos; 22.07.2011
comment
@Ryanos правда !? Скорее всего, если парень использует setTimeout, он, вероятно, делает больше js, чем просто вызывает функцию для сна на 1 секунду. Это хорошая практика, плюс YUI и другие абстрагируются от некоторых сложностей, таких как интервальный вызов. Перестань быть таким счастливым и пойти выпить кофе - person George P; 22.07.2011
comment
это другой вопрос. Есть разница между рекомендацией библиотеки для соответствия браузеру (всегда хорошо) и рекомендацией библиотеки для решения очень конкретной проблемы. - person Raynos; 22.07.2011

Для этого вы можете использовать метод setTimeOut http://www.w3schools.com/js/js_timing.asp

setTimeout ("alertMsg ()", 1000);

функция alertMsg () {предупреждение ("Привет"); }

person Prashant Singh    schedule 22.07.2011
comment
Специфика этого примера также бесполезна: считается плохой практикой передавать строку в качестве первого аргумента в setTimeout, поскольку она оценивается как setTimeout(function() { eval("myFunction()"); }, 3000). timeMsg назначает дескриптор тайм-аута для t, но никогда не возвращает его, поэтому нет возможности очистить тайм-аут. Он также тесно связан с alertMsg, потому что использует магическую строку в качестве обратного вызова выполнения. - person Nick Husher; 22.07.2011