Проблема в том, что аргумент recurTime
для TimerManager.start является нормальным аргументом для нормальной функции, поэтому он оценивается только один раз при вызове функции. Это не выражение, которое пересматривается снова и снова. Это означает, что вы получаете равноудаленные исполнения только с TimerManager.
Вы, вероятно, должны вручную написать то, что хотите, например, используя qx.event.Timer.once
, заново вычисляя время ожидания при каждом вызове.
EDIT:
Вот фрагмент кода, который может пойти вам в правильном направлении (это будет работать в контексте класса qooxdoo):
var that = this;
function doStuff(timeout) {
// do the things here you want to do in every timeout
// this example just logs the new calculated time offset
that.debug(timeout);
}
function callBack() {
// this just calls doStuff and handles a new time offset
var timeout = (Math.floor(Math.random()*11)*1000) + 5000;
doStuff(timeout);
qx.event.Timer.once(callBack, that, timeout);
}
// fire off the first execution
qx.event.Timer.once(callBack, that, 5000);