Запуск функции каждые 60 секунд: авто-вызов через setInterval()
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Вызов функции каждые 60 секунд в JavaScript можно осуществить с использованием setInterval
:
setInterval(() => console.log('Ещё минута пролетела 😮'), 60000);
Этот код устанавливает таймер, который запускает анонимную функцию через каждые 60 000 миллисекунд. Вы можете настроить вывод сообщения в консоли или выполнение других действий по своему усмотрению.
Для остановки таймера возможно использовать clearInterval
, передав ему идентификатор интервала, возвращаемый функцией setInterval
:
let intervalId = setInterval(() => console.log('Сообщение каждые 60 секунд!'), 60000);
// Когда потребуется остановить выполнение
clearInterval(intervalId);
Если задача сложна, и возникает опасность того, что вызовы начнут перекрываться, можно воспользоваться setTimeout
с рекурсивным вызовом для точного управления интервалами:
function repeatEvery60Seconds() {
console.log('Ещё минута пролетела, а я продолжаю работать 💪');
setTimeout(repeatEvery60Seconds, 60000);
}
repeatEvery60Seconds();
Обзор таймеров JavaScript
Рассмотрим разницу между setInterval
и setTimeout
:
setInterval
: устанавливает периодический вызов функции через определённые интервалы времени. Учтите, что если функция занимает существенное время, вызовы могут накладываться.setTimeout
: вызывает функции лишь единожды, но спустя определённую задержку. Рекурсивное применение сsetTimeout
исключает перекрывания вызовов и позволяет точнее контролировать интервалы.
Какой из методов выбрать, зависит от особенностей вашей функции и различных требований к ней.
Стратегия применения таймеров JavaScript
Читаемость кода
С целью повышения читаемости кода и упрощения отладки рекомендуется использовать именованные функции:
function logMessage() {
console.log("Меня зовут logMessage, и мне это нравится 😎");
}
setInterval(logMessage, 60000);
Тяжёлые задачи
Если ваша функция выполняет обширные вычисления, используйте рекурсивный setTimeout
, чтобы предотвратить перекрывание вызовов:
function heavyLifter() {
// Выполняем что-то важное...
setTimeout(heavyLifter, 60000);
}
heavyLifter();
Проверка DOM
Перед обновлением DOM-элементов убедитесь, что они существуют, чтобы избежать утечек памяти:
setInterval(() => {
let container = document.getElementById('ice-cream-container');
if(container){
container.textContent = 'Подается новая порция каждые 60 секунд!';
}
}, 60000);
Визуализация
Представьте себе часовую башню (🕰️
) на городской площади:
Каждый час она оглашает звон: **ДОНГ**
setInterval(() => {
🕰️.toll(); // **ДОНГ** Пробил час!
}, 60000 * 60); // Каждые 60 минут
Функции JavaScript, вызываемые с интервалом, можно представить в виде:
🕰️: [Час 1, Час 2, Час 3, ..., Час 24]
Каждое биение часов:
Функция ⏰ => 🔄 Каждые 60 секунд.
Сообщает, что минута прошла.
Утилиты планирования для прокачки
Динамическое планирование
Для настройки динамических интервалов фиксируйте время выполнения задачи и затем рассчитывайте задержку для следующего вызова:
function performTask() {
let start = Date.now();
// Выполнение задачи
let end = Date.now();
let duration = end – start;
setTimeout(performTask, Math.max(0, 60000 – duration));
}
performTask();
Практичный пример использования
setInterval
подходит для регулярных проверок или запросов к серверу:
setInterval(() => {
fetch('https://api.myapp.com/data')
.then(response => response.json())
.then(data => updateDomOrState(data))
}, 60000);
Условные интервалы
Остановите зацикленный вызов функции, когда достигнуто определённое условие, чтобы не тратить лишние системные ресурсы:
let intervalId = setInterval(() => {
if(weGotAWinner()) {
clearInterval(intervalId);
}
// Продолжение работы программы
}, 60000);
Ответственное использование таймеров в JavaScript
Таймеры могут быть полезны, но их следует использовать осознанно:
- Ограничивайте использование интервалов, чтобы предотвратить ухудшение производительности и утечки памяти.
- Всегда ликвидируйте таймеры при удалении связанных с ними DOM-элементов.
- Учтите, что
setInterval
не обеспечивает точности на неактивных или перегруженных вкладках. - Для задач, критичных к обработке в обозначенное время, рассмотрите использование серверных таймеров или технологии Web Workers.
Полезные материалы
- Глобальная функция setInterval() – Веб-API | MDN — исчерпывающий гид по
setInterval
. - JavaScript Timing Events — подробный учебник с примерами.
- Планирование: setTimeout и setInterval — глубокий анализ механизма планирования.
- Как остановить вызов setInterval в JavaScript – Stack Overflow — решения от профессионального сообщества.
- Таймеры | Документация Node.js v21.6.1 — официальная документация Node.js.
- Обработка событий :: Красноречивый JavaScript — детальная глава об использовании таймеров в JS.