Spec-Zone.ru › Node.js 8 LTS

Таймеры

Устойчивость: 2 - Стабильно

Модуль timer предоставляет глобальный API для планирования вызова функций в определённый момент в будущем. Поскольку функции таймеров являются глобальными, нет необходимости вызывать require('timers') для использования API.

Функции таймеров в Node.js реализуют API, аналогичный API таймеров веб-браузеров, но используют другую внутреннюю реализацию, построенную на основе цикла событий Node.js.

Класс: Immediate

Этот объект создаётся внутри и возвращается из setImmediate(). Его можно передать в clearImmediate() для отмены запланированных действий.

Класс: Timeout

Этот объект создаётся внутри и возвращается из setTimeout() и setInterval(). Его можно передать в clearTimeout() или clearInterval() (соответственно) для отмены запланированных действий.

По умолчанию, когда таймер планируется с помощью setTimeout() или setInterval(), цикл событий Node.js будет продолжать работу, пока таймер активен. Каждый из объектов Timeout , возвращаемых этими функциями, экспортирует как timeout.ref(), так и timeout.unref() функции, которые могут использоваться для управления этим поведением по умолчанию.

timeout.ref()

Добавлен в: v0.9.1

При вызове запрашивается, чтобы цикл событий Node.js не завершался, пока активен объект Timeout. Вызов timeout.ref() несколько раз не повлияет.

Примечание: По умолчанию все объекты Timeout «ссылочные», что обычно делает вызов timeout.ref() ненужным, если ранее не был вызван timeout.unref().

Возвращает ссылку на объект Timeout.

timeout.unref()

Добавлен в: v0.9.1

При вызове активный объект Timeout не будет требовать, чтобы цикл событий Node.js оставался активным. Если нет других действий, поддерживающих цикл событий, процесс может завершиться до вызова обратного вызова объекта Timeout. Вызов timeout.unref() несколько раз не повлияет.

Примечание: Вызов timeout.unref() создаёт внутренний таймер, который разбудит цикл событий Node.js. Создание слишком большого количества таких таймеров может негативно сказаться на производительности приложения Node.js.

Возвращает ссылку на объект Timeout.

Планирование таймеров

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

setImmediate(callback[, ...args])

Добавлен в: v0.9.1
  • callback <Функция> Функция, которую следует вызвать в конце текущего цикла цикла событий Node.js
  • ...args <любой> Необязательные аргументы, которые нужно передать при вызове callback.

Планирует «немедленное» выполнение callback после обратных вызовов событий ввода-вывода. Возвращает объект Immediate для использования с clearImmediate().

Когда делается несколько вызовов setImmediate(), функции callback добавляются в очередь для выполнения в порядке их создания. Весь список обратных вызовов обрабатывается на каждой итерации цикла событий. Если таймер немедленного типа добавляется в очередь из внутри выполняемого обратного вызова, этот таймер не будет запущен до следующей итерации цикла событий.

Если callback не является функцией, будет выброшено исключение TypeError.

Примечание: Этот метод имеет специальную версию для промисов, доступную с помощью util.promisify():

const util = require('util');
const setImmediatePromise = util.promisify(setImmediate);

setImmediatePromise('foobar').then((value) => {
  // value === 'foobar' (passing values is optional)
  // This is executed after all I/O callbacks.
});

// or with async function
async function timerExample() {
  console.log('Before I/O callbacks');
  await setImmediatePromise();
  console.log('After I/O callbacks');
}
timerExample();

setInterval(callback, delay[, ...args])

Добавлен в: v0.0.1
  • callback <Функция> Функция, которая вызывается по истечении таймера.
  • delay <число> Количество миллисекунд, которое следует подождать перед вызовом callback.
  • ...args <любой> Необязательные аргументы, которые нужно передать при вызове callback.

Планирует повторяющееся выполнение callback каждые delay миллисекунд. Возвращает объект Timeout для использования с clearInterval().

Если delay больше 2147483647 или меньше 1, delay будет установлено в 1.

Если callback не является функцией, будет выброшено исключение TypeError.

setTimeout(callback, delay[, ...args])

Добавлен в: v0.0.1
  • callback <Функция> Функция, которая вызывается по истечении таймера.
  • delay <число> Количество миллисекунд, которое следует подождать перед вызовом callback.
  • ...args <любой> Необязательные аргументы, которые нужно передать при вызове callback.

Планирует выполнение однократного callback через delay миллисекунд. Возвращает объект Timeout для использования с clearTimeout().

Вероятно, callback не будет вызван в точности через delay миллисекунд. Node.js не гарантирует точное время срабатывания обратных вызовов или их порядок. Обратный вызов будет вызван как можно ближе к указанному времени.

Примечание: Если delay больше 2147483647 или меньше 1, delay будет установлено в 1.

Если callback не является функцией, будет выброшено исключение TypeError.

Примечание: Этот метод имеет специальную версию для промисов, доступную с помощью util.promisify():

const util = require('util');
const setTimeoutPromise = util.promisify(setTimeout);

setTimeoutPromise(40, 'foobar').then((value) => {
  // value === 'foobar' (passing values is optional)
  // This is executed after about 40 milliseconds.
});

Отмена таймеров

Методы setImmediate(), setInterval() и setTimeout() каждый возвращают объекты, представляющие запланированные таймеры. Их можно использовать для отмены таймера и предотвращения его срабатывания.

Отменить таймеры, созданные с помощью варианта промисов setImmediate(), setTimeout(), нельзя.

clearImmediate(immediate)

Добавлен в: v0.9.1
  • immediate <Immediate> Объект Immediate , возвращённый методом setImmediate().

Отменяет объект Immediate , созданный с помощью setImmediate().

clearInterval(timeout)

Добавлен в: v0.0.1
  • timeout <Timeout> Объект Timeout , возвращённый методом setInterval().

Отменяет объект Timeout , созданный с помощью setInterval().

clearTimeout(timeout)

Добавлен в: v0.0.1
  • timeout <Timeout> Объект Timeout , возвращённый методом setTimeout().

Отменяет объект Timeout , созданный с помощью setTimeout().

© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/dist/latest-v8.x/docs/api/timers.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API