具有随机 recurTime 的 TimerManager
我想要每次迭代时有一个随机的过期时间。 此示例仅随机化 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
I want a random expiration time on EACH iteration.
This example will only randomize an expiration time between 5~15 seconds and use them forever.
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
);
I also accept an pure JS solution if any.
http://demo.qooxdoo.org/current/apiviewer/#qx.util.TimerManager
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题在于 TimerManager.start 的
recurTime
参数是普通函数的普通参数,因此在调用函数时仅计算一次。这不是一个被一遍又一遍地重新评估的表达式。这意味着您只能使用 TimerManager 获得等距执行。您可能必须手动编写所需的代码,例如使用 qx.event.Timer.once 在每次调用时重新计算超时。
编辑:
这是一个可能适合您的代码片段(这将在 qooxdoo 类的上下文中工作):
The issue is that the
recurTime
argument to TimerManager.start is a normal argument to a normal function, so it is evaluated only once when the function is called. It's not an expression that gets re-evaluated over and over again. That means you only get equidistant executions with TimerManager.You probably have to code what you want by hand, e.g. using
qx.event.Timer.once
calculating the timeout anew with each invocation.EDIT:
Here is a code snippet that might go in the right direction for you (this would work in the context of a qooxdoo class):