Есть ли какой-либо метод JavaScript, аналогичный jQuery delay()
или wait()
(чтобы задержать выполнение скрипта на определенное время)?
javascript
settimeout
Нияз
источник
источник
function_reference
если вы не включите()
. Т.е.function_reference
просто это - ссылка; передачаfunction_reference()
сразу вызовет функцию немедленно.Просто чтобы добавить к тому, о чем все остальные говорили
setTimeout
: если вы хотите вызывать функцию с параметром в будущем, вам нужно настроить некоторые анонимные вызовы функций.Вам нужно передать функцию в качестве аргумента, чтобы она вызывалась позже. По сути это означает без скобок за именем. Следующее вызовет оповещение сразу и отобразит «Hello world»:
Чтобы это исправить, вы можете указать имя функции (как это сделал Флубба) или использовать анонимную функцию. Если вам нужно передать параметр, то вы должны использовать анонимную функцию.
Но если вы запустите этот код, вы заметите, что через 2 секунды всплывающее окно скажет «Hello Stack Overflow». Это связано с тем, что значение переменной a изменилось за эти две секунды. Чтобы через два секунды он сказал «Hello world», вам нужно использовать следующий фрагмент кода:
Это будет ждать 2 секунды, а затем всплывающее окно «Привет мир».
источник
Просто для небольшого расширения ... Вы можете выполнить код непосредственно в
setTimeout
вызове, но, как говорит @patrick , вы обычно назначаете функцию обратного вызова, как это. Время миллисекундыисточник
Если вы действительно хотите иметь блокирующую (синхронную)
delay
функцию (для чего бы то ни было), почему бы не сделать что-то вроде этого:источник
delay
загрузкой (чтобы ответить на этот вопрос ). Есть ли способ сделать это?Вам нужно использовать setTimeout и передать ему функцию обратного вызова. Причина, по которой вы не можете использовать sleep в javascript, заключается в том, что вы заблокируете всю страницу от каких-либо действий в это время. Не хороший план. Используйте модель событий Javascript и будьте счастливы. Не борись с этим!
источник
Вы также можете использовать window.setInterval () для повторного запуска некоторого кода через регулярные промежутки времени.
источник
setTimeout()
делает это один раз,setInterval()
делает это несколько раз. Если вы хотите, чтобы ваш код запускался каждые 5 секунд,setInterval()
это сделано для работы.Чтобы добавить более ранние комментарии, я хотел бы сказать следующее:
setTimeout()
Функция в JavaScript не приостанавливает выполнение сценария на себе, а лишь говорит компилятору , чтобы выполнить код когда - нибудь в будущем.В JavaScript нет функции, которая может приостановить выполнение. Тем не менее, вы можете написать свою собственную функцию, которая выполняет что-то вроде безусловного цикла, пока не будет достигнуто время, используя
Date()
функцию и добавляя нужный интервал времени.источник
Если вам нужно только проверить задержку, вы можете использовать это:
И затем, если вы хотите задержать на 2 секунды, вы делаете:
Не может быть лучшим для производства, хотя. Подробнее об этом в комментариях
источник
почему вы не можете поставить код за обещание? (напечатано на макушке)
источник
Простой ответ:
Вышеприведенная функция ждет 1 секунду (1000 мс), затем устанавливает x в 1. Очевидно, это пример; Вы можете делать все что угодно внутри анонимной функции.
источник
Мне очень понравилось объяснение Мауриуса (самый высокий отклик) с тремя различными методами вызова
setTimeout
.В моем коде я хочу автоматически переходить на предыдущую страницу после завершения события сохранения AJAX. Завершение события сохранения имеет небольшую анимацию в CSS, указывающую на успешное сохранение.
В моем коде я обнаружил разницу между первыми двумя примерами:
Этот не ждет тайм-аута - функция back () вызывается почти сразу, независимо от того, какой номер я вставил для задержки.
Однако, изменив это на:
Это именно то, что я надеялся.
Это не относится к операции back (), то же самое происходит с
alert()
. В основном сalert()
использованием в первом случае время задержки игнорируется. Когда я закрываю всплывающее окно, анимация для CSS продолжается.Таким образом, я бы рекомендовал второй или третий метод, который он описывает, даже если вы используете встроенные функции, а не аргументы.
источник
У меня было несколько команд ajax, которые я хотел запустить с задержкой между ними. Вот простой пример того, как это сделать. Я готов быть разорванным в клочья, хотя для моего нетрадиционного подхода. :)
Вы можете скопировать блок кода и вставить его в окно консоли и увидеть что-то вроде:
источник
Самое простое решение для вызова вашей функции с задержкой:
источник
функция задержки:
использование внутри
async
функции:источник
Как уже говорилось, setTimeout - ваша
самая безопасная ставка. Но иногда вы не можете отделить логику от новой функции, тогда вы можете использовать Date.now (), чтобы получить миллисекунды и сделать задержку самостоятельно ....
источник