我想要立即进行api调用,然后在1秒后完成,然后是2秒等,增量为1秒到10秒。
我试过这样的事情:
Meteor.startup ->
counter = 1000
Meteor.setInterval (->
Meteor.call "call_url", url, (err, result) ->
...
if counter < 10000
counter += 1000
console.log counter
), counter
当我的计数器递增时,日志完成每一秒,这意味着 setInterval 不会跟踪该值。
我看到处理这个问题的唯一方法就是让9 setTimeout 在不同时间调用api,然后在所有超时后启动 Meteor.setInterval 。听起来很难看。
有关如何以干净的方式执行此操作的任何建议?当用户只是连接到页面时,看到频繁更新是很重要的,但是如果他决定让它打开一段时间,则不需要经常执行该api查询。
答案 0 :(得分:2)
更通用的解决方案(以及CoinsManager未来的可扩展性)是使用支持将来调度事件的排队包。我查看过一堆background task management for Meteor,queue支持日程安排。
答案 1 :(得分:0)
不太清楚你在问什么,并且可能有很多方法来生成你想要的间隔。
在javascript中它可能看起来像这样:
var doStuff = function(){...};
var intervals = [ 1000, 3000, 6000, 10000, 15000, 21000, 28000, 36000, 45000, 55000 ];
doStuff(); //run immediately
intervals.forEach( function( interval ){
Meteor.setTimeout( doStuff, interval );
});