Типы таймеров в JavaScript?

В JavaScript существует несколько основных типов таймеров, которые позволяют выполнять код через определенные интервалы времени или с задержкой. Вот основные:

1. setTimeout(callback, delay)

Запускает функцию или код один раз через заданную задержку (в миллисекундах).

  • Пример:
    setTimeout(() => {
    console.log("Прошло 2 секунды");
    }, 2000);

2. setInterval(callback, delay)

Запускает функцию или код через регулярные интервалы времени, повторяя её каждые delay миллисекунд.

  • Пример:

    const intervalId = setInterval(() => {
    console.log("Каждые 2 секунды");
    }, 2000);
  • Чтобы остановить таймер, используется clearInterval(intervalId):

    clearInterval(intervalId);

3. setImmediate(callback) (в среде Node.js)

Запускает функцию сразу после завершения текущей операции. В браузере эта функция не поддерживается.

  • Пример (в Node.js):
    setImmediate(() => {
    console.log("Этот код выполнится сразу после текущей операции");
    });

4. requestAnimationFrame(callback) (для анимаций)

Запускает функцию перед следующим перерисовыванием страницы, что полезно для создания плавных анимаций.

  • Пример:

    function animate() {
    console.log("Анимация кадра");
    requestAnimationFrame(animate);
    }
    
    requestAnimationFrame(animate);
  • Чтобы остановить анимацию, используется cancelAnimationFrame(id):

    const animationId = requestAnimationFrame(animate);
    cancelAnimationFrame(animationId);

5. clearTimeout(timeoutId) и clearInterval(intervalId)

Останавливают таймеры, запущенные с помощью setTimeout и setInterval, соответственно.

  • Пример:

    const timeoutId = setTimeout(() => {
    console.log("Эта функция не выполнится, так как таймер будет очищен");
    }, 5000);
    
    clearTimeout(timeoutId);

Эти таймеры используются для управления временем выполнения кода в JavaScript, будь то однократная задержка, регулярные интервалы или анимации.