Есть ли способ периодически вызывать функцию в JavaScript?
javascript
javascript-events
coderex
источник
источник
setInterval()
- правильный ответ на вопрос независимо от параметра. Это просто пример, и оба метода верны по определению.Обратите внимание, что setInterval () часто не лучшее решение для периодического выполнения - это действительно зависит от того, какой javascript вы действительно периодически вызываете.
например. Если вы используете setInterval () с периодом 1000 мс и в периодической функции вы делаете вызов ajax, который иногда занимает 2 секунды для возврата, вы сделаете еще один вызов ajax до того, как вернется первый ответ. Обычно это нежелательно.
Во многих библиотеках есть периодические методы, которые защищают от ловушек наивного использования setInterval, таких как пример Prototype, приведенный Нельсоном.
Чтобы добиться более надежного периодического выполнения с функцией, в которой есть вызов jQuery ajax, рассмотрите что-то вроде этого:
Другой подход - использовать setTimeout, но отслеживать истекшее время в переменной, а затем динамически устанавливать задержку тайм-аута для каждого вызова, чтобы выполнить функцию как можно ближе к желаемому интервалу, но никогда не быстрее, чем вы можете получить ответ.
источник
У всех уже есть решение setTimeout / setInterval. Я думаю, что важно отметить, что в setInterval можно передавать функции, а не только строки. На самом деле, вероятно, немного «безопаснее» передавать реальные функции вместо строк, которые будут «преобразованы» в эти функции.
Или:
источник
Старый вопрос, но .. Мне также нужен был периодический бегун задач и написал TaskTimer . Это также полезно, когда вам нужно запускать несколько задач с разными интервалами.
TaskTimer
работает как в браузере, так и в Node. См. Документацию обо всех функциях.источник
Вы захотите взглянуть на setInterval () и setTimeout ().
Вот достойная обучающая статья .
источник
да - посмотрите
setInterval
иsetTimeout
для выполнения кода в определенные моменты времени. setInterval будет использоваться для периодического выполнения кода.Посмотрите демонстрацию и ответьте здесь для использования
источник
источник
Поскольку вы хотите, чтобы функция выполнялась периодически , используйте setInterval
источник
Собственный способ - действительно
setInterval()
/clearInterval()
, но если вы уже используете библиотеку Prototype, вы можете воспользоваться PeriodicalExecutor:Это предотвращает наложение вызовов. Из http://www.prototypejs.org/api/periodicalExecuter :
источник