Таймеры

Управляемые таймеры Toolbox и очистка при выходе из игры.

Управляемые таймеры

Вместо глобальных таймеров Node.js используйте методы mod: Toolbox учитывает их и очищает при выгрузке. Сетевой интерфейс также очищает timeout/interval при событии leave_game, включая выход персонажа и закрытие игрового подключения.

Метод Назначение
mod.setTimeout(callback, delay, ...args) Однократный вызов после задержки в миллисекундах
mod.clearTimeout(handle) Отмена конкретного timeout
mod.setInterval(callback, delay, ...args) Повторяющийся вызов
mod.clearInterval(handle) Отмена конкретного interval
mod.clearAllTimeouts() Отмена всех timeout этого интерфейса
mod.clearAllIntervals() Отмена всех interval этого интерфейса
mod.setImmediate(callback, ...args) Отложенный вызов в цикле событий
mod.clearImmediate(handle) Отмена immediate
mod.clearAllImmediates() Отмена всех immediate

Используйте соответствующую функцию отмены: не передавайте interval в clearTimeout. activeTimeouts и activeIntervals — наборы Set для просмотра; не изменяйте их вручную.

Пример

const timer = mod.setTimeout(() => {
    mod.log('One second later');
}, 1000);

// If the action becomes unnecessary:
mod.clearTimeout(timer);

Таймер не гарантирует точный момент выполнения: callback запускается, когда цикл событий свободен. В проверенной сборке задержки приводятся к числу, значение больше 2147483647 вызывает RangeError. Используйте конечные неотрицательные значения. setImmediate очищается при выгрузке, но не входит в обработчик очистки timeout/interval на leave_game.

Источники: doc/mod/timers.md, bin/mod.js.