我想用智能手机操作窗帘。现在,每次我在手机上更改位置
func main() {
OnUpdate(func(tPos int) {
wc(tPos,cPos)
cPos = tPos
}
}
调用,其中tPos是0到100之间的整数,它是目标位置。当前位置cPos还有一个变量。 OnUpdate应调用一个函数,该函数根据cPos和tPos之间的顺序关系打开或关闭窗口覆盖。这个函数看起来像这样。
func wc(tPos int, cPos int){
switch{
case tPos == 0:
log.Println("close")
case tPos == 100:
log.Println("open")
case tPos > cPos:
t := time.Duration( (tPos - cPos)*10*openTime)
log.Println("open")
time.Sleep( t * time.Millisecond)
log.Println("stop")
case tPos < cPos:
t := time.Duration( (cPos - tPos)*10*closeTime)
log.Println("close")
time.Sleep( t * time.Millisecond)
log.Println("stop")
}
}
我现在的问题是应该有一些延迟。我希望在调用OnUpdate之后有一个类似3秒的计时器,然后调用wc,除非在3秒内再次调用OnUpdate。
但我不知道该怎么做。有人能告诉我这是一个好方法吗?
答案 0 :(得分:0)
不完全确定你的意思,但无论如何我都会试一试。什么叫OnUpdate
?那是你的手机吗?您是否只想在在wc
提供的回调中调用OnUpdate
之前睡觉?
请注意:https://play.golang.org/p/4vVpEEUcqg
我的理解是你要确保wc
不经常被调用。 for
中的select
/ run
语句确保wc
最多只能每3秒调用一次。