Таймеры

Таймеры позволяют однократно или многократно выполнять указанную функцию через определенный интервал времени. Для управления таймерами используются следующие глобальные функции (в Web-браузере это методы объекта window):

  • setTimeout() — создает таймер, однократно выполняющий указанную функцию (или выражение в Web-браузере) спустя заданный интервал времени:
<Идентификатор> = setTimeout(<Функция или выражение>,
                             <Интервал>[, <Параметры>])
  • clearTimeout(<Идентификатор>) — останавливает таймер, установленный функцией setTimeout();
  • setInterval() — создает таймер, многократно выполняющий указанную функцию (или выражение в Web-браузере) через заданный интервал времени:
<Идентификатор> = setInterval(<Функция или выражение>,
                              <Интервал>[, <Параметры>])
  • clearInterval(<Идентификатор>) — останавливает таймер, установленный функцией setInterval().

Здесь <Интервал> — это промежуток времени, по истечении которого выполняется <Функция или выражение> (в Node.js возможно указание только функции). Значение задается в миллисекундах. В аргументе <Параметры> можно указать значения через запятую. Эти значения будут переданы в функцию в качестве параметров.

На заметку

Давайте однократно выполним функцию через две секунды:

console.log('До таймера');
const timerId = setTimeout( function(x) {
   console.log('Интервал истек. x =', x);
}, 2000, 15);
// clearTimeout(timerId);
console.log('Конец программы');

Результат в окне консоли (последняя строка отобразится через две секунды, а не сразу):

До таймера
Конец программы
Интервал истек. x = 15

Если удалить символы комментария перед вызовом функции clearTimeout(), то результат будет таким:

До таймера
Конец программы

Во многих языках программирования, при достижении конца программы все потоки и сама программа завершаются. В Node.js это не так. После выполнения последней инструкции выполняется бесконечный цикл обработки событий, в котором ожидается завершение всех потоков. Программа завершается только в том случае, если список событий пустой.

Теперь выполним функцию три раза с интервалом в две секунды:

console.log('До таймера');
let count = 0;
const timerId = setInterval( function(x) {
   console.log(`count = ${count} x = ${x}`);
   count++;
   if (count > 2) clearInterval(timerId);
}, 2000, 34);
console.log('Конец программы');

Результат в окне консоли:

До таймера
Конец программы
count = 0 x = 34
count = 1 x = 34
count = 2 x = 34

В Node.js доступны две дополнительные функции:

  • setImmediate() — выполняет функцию в конце текущего цикла событий:
<Идентификатор> = setTimeout(<Функция>[, <Параметры>])
  • clearImmediate(<Идентификатор>) — останавливает таймер, установленный функцией setImmediate().

Пример:

console.log('До таймера');
const timerId = setImmediate( function(x) {
   console.log('Вызов функции. x =', x);
}, 15);
// clearImmediate(timerId);
console.log('Конец программы');

Результат в окне консоли (последняя строка отобразится сразу после вывода сообщения Конец программы):

До таймера
Конец программы
Вызов функции. x = 15

Если удалить символы комментария перед вызовом функции clearImmediate(), то результат будет таким:

До таймера
Конец программы

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов