Здравствуйте, товарищи. Возникла потребность запускать функцию через некоторые промежутки времени, если выполняется некое условие. Приведу код, ибо он яснее словесной тирады:

Код AS3:
function someFunc(event:TimerEvent = null):void {
// Наличие параметра говорит о том, что функция была вызвана после
// ожидания, запущенного из этой же функции.
if (event) event.target.removeEventListener(TimerEvent.TIMER_COMPLETE, someFunc);
// то есть нормальный вызов функции происходит так: someFunc();
if (<некое условие>) {
// Если условие истинно, перезапускаем функцию через 1 секунду.
var timer:Timer = new Timer(1000, 1);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, someFunc);
timer.start();
return;
}
// иначе, если <некое условие> оказалось ложным,
// выполняем дальнейший код функции.
}
Интересует, нет ли здесь утечек памяти (например не нужно ли явно вызывать
(event.target as Timer).reset())? То есть, насколько я понимаю,
timer живет до тех пор, пока тикает и пока имеет слушателя события. Если так, то первая строчка функции должна сделать его доступным для GC. Также буду благодарен за возможные альтернативные решения.