我有这个循环:
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){
但我正在摸索它。
如果有更好的方法可以做到这一点,请告诉我。
答案 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
}