Ява Скрипты
Почти все реализации JavaScript имеют внутренний таймер-планировщик, который позволяет задавать вызов функции через заданный период времени.
В частности, эта возможность поддерживается в браузерах и в сервере Node.JS.
Синтаксис:
var timerId = setTimeout(func / code, delay[, arg1, arg2...])
Параметры:
func/code Функция или строка кода для исполнения. Строка поддерживается для совместимости, использовать её не рекомендуется. delay Задержка в милисекундах, 1000 милисекунд равны 1 секунде. arg1, arg2… Аргументы, которые нужно передать функции. Не поддерживаются в IE9-.Исполнение функции произойдёт спустя время, указанное в параметре delay.
Например, следующий код вызовет func через одну секунду:
function func { alert( 'Привет' ); } setTimeout(func, 1000);
С передачей аргументов (не сработает в IE9-):
function func(phrase, who) { alert( phrase + ', ' + who ); } setTimeout(func, 1000, "Привет", "Вася"); // Привет, Вася
Если первый аргумент является строкой, то интерпретатор создаёт анонимную функцию из этой строки.
То есть такая запись тоже сработает:
setTimeout("alert('Привет')", 1000);
Однако, использование строк не рекомендуется, так как они могут вызвать проблемы при минимизации кода, и, вообще, сама возможность использовать строку сохраняется лишь для совместимости.
Вместо них используйте анонимные функции, вот так:
setTimeout(function { alert('Привет') }, 1000);
Функция setTimeout возвращает числовой идентификатор таймера timerId, который можно использовать для отмены действия.
var timerId = setTimeout(...); clearTimeout(timerId);
В следующем примере мы ставим таймаут, а затем удаляем (передумали). В результате ничего не происходит.
var timerId = setTimeout(function { alert(1) }, 1000); alert(timerId); // число - идентификатор таймера clearTimeout(timerId); alert(timerId); // всё ещё число, оно не обнуляется после отмены
Как видно из alert, в браузере идентификатор таймера является обычным числом. Другие JavaScript-окружения, например Node.JS, могут возвращать объект таймера, с дополнительными методами.
Такие разночтения вполне соответствуют стандарту просто потому, что в спецификации JavaScript про таймеры нет ни слова.
Таймеры – это надстройка над JavaScript, которая описана в секции Timers стандарта HTML5 для браузеров и в документации к Node.JS – для сервера.
Метод setInterval имеет синтаксис, аналогичный setTimeout.
var timerId = setInterval(func / code, delay[, arg1, arg2...])
Смысл аргументов – тот же самый. Но, в отличие от setTimeout, он запускает выполнение функции не один раз, а регулярно повторяет её через указанный интервал времени. Остановить исполнение можно вызовом clearInterval(timerId).
Source: learn.javascript.ru