setTimeout & setInterval
Таймеры
Внутренний таймер-планировщик браузера позволяет откладывать вызов функции на определенный период времени. Для этого есть тайм-ауты и интервалы, которые контролируют когда и как часто вызывается функция. Таймеры реализованы в браузере, а не встроены в язык, и доступны на глобальном объекте window.
Тайм-аут
Метод setTimeout() позволяет запланировать запуск функции через определённое время.
const timerId = setTimeout(callback, delay, arg1, arg2, ...);callback- функция, выполнение которое необходимо запланировать.delay- время в миллисекундах, через которое callback-функция будет вызвана один раз.
Дополнительные аргументы (arg1, arg2 и т. д.) будут переданы callback-функции во время вызова. Возвращает цифровой идентификатор созданного таймера, который используется для его удаления. .
Если нам, по какой-то причине, нужно отменить вызов функции внутри тайм-аута, используется метод clearTimeout(id), которая принимает идентификатор таймера и очищает (удаляет) его.
const greet = () => { console.log("Hello!");};const timerId = setTimeout(greet, 3000);clearTimeout(timerId);Поскольку мы вызвали clearTimeout(), который исполнится раньше чем будет вызвана функция greet(), таймер с timerId будет удалён и регистрация отложенного вызова greet() отменится. Поэтому в консоль ничего не выведется.
Интервал
Метод setInterval() - это простой способ повторения кода снова и снова с установленным промежутком времени повторений. Синтаксис и параметры такие же как у setTimeout(). В отличие от setTimeout(), интервал запускает выполнение функции не один раз, а регулярно повторяет её через указанный промежуток времени. Остановить исполнение можно вызовом метода clearInterval(id).
const timerId = setInterval(callback, delay, arg1, arg2, ...);При клике на кнопку «Start» запустим интервал и будем каждую секунду выводить в консоль строку. Используем Math.random() чтобы строки были разные. По клику на кнопку «Stop» вызовем clearInterval() и передадим идентификатор интервала который надо остановить.
Частота срабатывания счетчика
У браузерного таймера есть минимальная возможная задержка. В современных браузерах она колеблется примерно от 0 до 4 миллисекунд. В более старых браузерах задержка может быть больше и достигать 15 миллисекунд. По стандарту, минимальная задержка составляет 4 миллисекунды, так что разницы между setTimeout(callback, 1) и setTimeout(callback, 4) нет.
Таймер может срабатывать реже чем указано в параметре delay, потому что при слишком большой загрузке процессора некоторые запуски функций-интервалов будут пропущены. Браузеры продолжают выполнять тайм-ауты и интервалы даже если вкладка браузера неактивна, но при этом снижают частоту срабатывания таймеров.
Last updated