在SCXML状态机中,我怎么能说“在我进入此状态 3 分钟后触发一个事件,但如果我在该状态下坐 2.9 分钟然后离开,则不会。如果我重新进入该状态,请重新启动计时器(不要不要在 0.1 分钟内关闭)”
问问题
1697 次
1 回答
6
用于<send>
在您进入状态时触发延迟事件(具有任何名称,例如“超时”),并<cancel>
在您退出状态时用于移除计时器。您必须确保为<send>
您计划稍后取消的每个实例创建一个唯一 ID。
<scxml xmlns='http://www.w3.org/2005/07/scxml' version='1.0'>
<state id="s1">
<onentry><send id="state1-timer" event="timeout" delay="180s"/></onentry>
<onexit><cancel sendid="state1-timer"/></onexit>
</state>
<!-- ... --->
</scxml>
注意:根据CSS2 时间规范,您只能使用s
(seconds) 或ms
(milliseconds) 作为延迟时间。因此,3 分钟是。180s
于 2013-02-25T23:00:40.043 回答