如何让我的while循环每分钟一次?

时间:2014-07-18 19:53:36

标签: groovy smartthings

我有这个循环:

while (now() > timeToday(checkTime).time && now() < timeToday(arrivalTime).time){

我希望这个循环只在实时时钟的秒数达到00时运行。基本上允许循环每分钟运行一次。我这样做是因为我写的IDE只允许最多15秒的暂停。不幸的是,sleep()在SmartThings IDE中根本不是一个选项

我在想这样的事情

while (now() > timeToday(checkTime).time && 
       now() < timeToday(arrivalTime).time && 
       Date.parse('ss', now() = 00).time){

但我正在摸索它。

如果有更好的方法可以做到这一点,请告诉我。

3 个答案:

答案 0 :(得分:2)

对于像“每分钟一次”这样的场景,你可以看看TimerTask,它可以很容易地以常规的方式使用。

new Timer().schedule({
    // your logic here
} as TimerTask, startTime, 1000) 

我建议彻底阅读javadoc以了解调度合同(tick的正确性)。

答案 1 :(得分:2)

SmartThings最终给出了答案,并表示要使用他们的runIn(60, myHandler)逻辑。

感谢每个人的投入。

答案 2 :(得分:1)

你可以尝试sleep 60*1000在循环中睡一分钟,然后再迭代下一个周期

while true
{
  sleep 60*1000
  //do your stuff here
  //make sure to include break logic to exit out of the loop
}