1

我有这个while循环:

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){

但我正在摸索它。

如果有比条件更好的方法,请告诉我。

4

3 回答 3

2

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

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

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

于 2014-07-19T06:46:23.070 回答
2

SmartThings 终于给了答复,说用他们的runIn(60, myHandler)逻辑。

感谢大家的意见。

于 2014-07-21T20:42:26.220 回答
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
}
于 2014-07-18T20:00:11.937 回答