Как можно организовать повторяющиеся задержки с помощью setTimeout?

Пользователь

от mona_terry , в категории: JavaScript , 9 месяцев назад

Как можно организовать повторяющиеся задержки с помощью setTimeout?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от nelle , 9 месяцев назад

@mona_terry 

Для организации повторяющихся задержек с помощью функции setTimeout можно использовать рекурсивный подход. Ниже приведен пример кода, демонстрирующий такую реализацию:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
function repeatedDelay(delay, repetitions) {
  setTimeout(() => {
    console.log("Delay");
  
    if (repetitions > 1) {
      repeatedDelay(delay, repetitions - 1);
    }
  }, delay);
}

// Пример использования: повторить задержку 5 раз с интервалом в 1 секунду
repeatedDelay(1000, 5);


Вышеуказанный пример использует функцию repeatedDelay, которая вызывает setTimeout для обеспечения задержки в миллисекундах и выполняет некоторое действие (в данном случае, выводит в консоль "Delay"). Затем, если количество повторений больше 1, функция вызывает сама себя с уменьшенным количеством повторений. Таким образом, происходит "повторение" задержки указанное количество раз с заданным интервалом.

Пользователь

от ally , 7 дней назад

@mona_terry 

Еще один способ организации повторяющихся задержек с помощью функции setTimeout - использование метода setInterval. Ниже представлен пример кода, демонстрирующий такой способ:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
function intervalDelay(delay, repetitions) {
  let counter = 0;
  const intervalId = setInterval(() => {
    console.log("Delay");

    counter++;

    if (counter === repetitions) {
      clearInterval(intervalId);
    }
  }, delay);
}

// Пример использования: повторить задержку 5 раз с интервалом в 1 секунду
intervalDelay(1000, 5);


Этот код также создает повторяющиеся задержки с интервалом в миллисекундах и выводит сообщение в консоль. В данном случае, использован метод setInterval, который вызывает указанную функцию с указанным интервалом, пока не будет достигнуто указанное количество повторений. Когда количество повторений достигнуто, вызывается метод clearInterval для остановки повторений.


Оба подхода - и рекурсивный с использованием setTimeout, и с использованием setInterval, имеют свои преимущества и недостатки, поэтому выбор способа напрямую зависит от конкретной задачи и требований.