假设为stdin
注册了一些回调。
fileevent stdin readable thatCallback
这意味着在执行update
命令期间,当thatCallback
处有可用输入时,它会一次又一次评估stdin
。
如何在update
的每次通话中仅对thatCallback
进行一次评估?
答案 0 :(得分:2)
对于update
的每次使用,任何特定的事件处理程序只执行一次。那是因为update
做的是检查哪些事件处理程序可以运行(以及哪些事件实际排队),然后执行所有准备好的事件。它不会等待进一步的事件发生。
现在,fileevent
仍将被注册,以便下次进入事件循环时,它可能会再次运行。如果您只想要一次fileevent
,请在处理程序运行时取消注册。例如:
fileevent stdin readable thatCallback
proc thatCallback {} {
# First, de-register ourselves so we're a one-shot
fileevent stdin readable {}
# Now do the rest of it here...
}