Что такое setTimeout и setInterval?
Функции setTimeout и setInterval являются фундаментальными инструментами в JavaScript для управления временем и планирования выполнения кода в асинхронном режиме через механизм событийного цикла. Метод setTimeout(fn, ms) используется для того, чтобы выполнить переданную функцию fn один раз после того, как пройдет заданное количество миллисекунд ms. Это полезно для создания отложенных действий, например, скрытия всплывающего уведомления через три секунды или реализации дебаунса при вводе текста в поле поиска.
В свою очередь, метод setInterval(fn, ms) предназначен для циклического повторения указанной функции через равные интервалы времени. Он продолжает работать до тех пор, пока выполнение не будет остановлено принудительно. Оба метода возвращают уникальный числовой идентификатор таймера (ID), который используется для их отмены. Для отмены запланированного одиночного вызова применяется функция clearTimeout(timerId), а для остановки повторяющегося интервала — clearInterval(timerId), что является обязательным требованием для предотвращения утечек памяти, например, при размонтировании компонентов в фреймворках.
Важно понимать особенности работы этих таймеров в браузере. Указанная задержка в миллисекундах не является гарантированным временем точного срабатывания, а представляет собой лишь минимально допустимую паузу. Из-за однопоточенной природы JavaScript и особенностей работы цикла событий (Event Loop), если основной поток занят тяжелыми вычислениями, таймер будет ждать своей очереди. Кроме того, в современных браузерах для вложенных таймеров или неактивных вкладок существует аппаратное ограничение минимальной задержки, которая обычно составляет около 4 миллисекунд.