Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Таймеры
Таймеры позволяют однократно или многократно выполнять указанную функцию через определенный интервал времени. Для управления таймерами используются следующие глобальные функции (в 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()
, то результат будет таким:
До таймера
Конец программы
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов