我希望每次迭代的随机过期时间。 此示例仅将5到15秒之间的到期时间随机化并永久使用它们。
var timer = qx.util.TimerManager.getInstance();
timer.start(function(userData, timerId)
{
this.debug("timer tick");
},
(Math.floor(Math.random()*11)*1000) + 5000,
this,
null,
0
);
我也接受纯JS解决方案。
http://demo.qooxdoo.org/current/apiviewer/#qx.util.TimerManager
答案 0 :(得分:1)
问题是TimerManager.start的recurTime
参数是普通函数的正常参数,因此在调用函数时只计算一次。这不是一遍又一遍地重新评估的表达。这意味着您只能使用TimerManager进行等距执行。
您可能需要手动编码您想要的内容,例如:使用qx.event.Timer.once
在每次调用时重新计算超时。
编辑:
这是一个可能为您指明正确方向的代码段(这可以在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);