У меня есть код, который опросит службу, и мне нужен способ отменить этот интервал clearTimeout
через события. Тайм-ауты действуют как интервал, снова вызывающий setTimeout внутри функции.Node.js отменить setTimeout из события
Так, например, у меня есть другой объект, который выставлен как эмитент событий, и этот процесс опроса и испускает некоторые данные на этом пути. Вот упрощенный пример:
function events() {
var timer = true;
events.on('cancel', function() {
timer = false;
});
function polling() {
//Get some data
events.emit('data', data);
if (timer || typeof timer == 'number') {
timer = setTimeout(polling, 1000);
}
}
polling();
}
Это может работать, в основном, когда эта служба получает cancel
события, он устанавливает таймер на ложь, что из-за проверки не будет продолжаться. Тем не менее, может быть шанс, когда он прошел условие, событие, сработал таймер, и теперь он продолжается.
Любая идея, если есть более пуленепробиваемый способ справиться с такими вещами? В основном отмена опроса на основе события.
Вместо того, чтобы устанавливать 'timer' в false, как насчет вызова clearTimeout (timer)'? – bardzusny