一些场景下,我们需要每隔一段时间就执行某个动作,我们可以通过定时事件
节点来完成
提示
鸿图是基于事件驱动架构(EDA)来设计的,所有触发条件都被看做事件
添加节点
右键单击画布任意位置,选择事件
,选择定时事件
。
连接动作节点
连接定时事件
和打印
节点,就可以在屏幕右上角看到打印内容,如下图:
动动手
修改定时事件节点上的时间间隔,观察打印结果
间隔时间参数
和其他输入参数一样,间隔时间可以是其他节点的计算结果,下图设置了间隔时间为 3600 秒,即 1 小时。
一个复杂的例子
让我们来实现一个功能:每天晚上 23:30 熄灯。我们需要哪些节点呢?首先我们想到以下节点:
- 定时事件
- 条件判断
- 获取当前时间
- 熄灯动作(暂时以打印替代,在
万物互联
章节再展开讨论)
提示
当前时间
节点在方法
-系统
下面
问号区域应该如何放置/连接节点?我们注意到当前时间
节点已经将小时、分钟、秒展开了,所以我们只需要判断小时是否等于 23,同时分钟是否等于 30 就可以了。我们先放置比较
节点:
在我们的例子中,两个条件需要同时满足,所以我们需要使用且
这个逻辑运算符节点,并将逻辑运算结果给到我们的条件分支
节点:
到此我们的功能就已经实现了✌️
性能思考
注意我们的定时事件默认是每隔 3 秒触发,设置为多少比较合适? 可能第一反应是 30 分钟,即 1800 秒。但这是不对的,假设我们的鸿图启动时间是 14:15,每隔 30 分钟检测一次,那分别会在 14:45,15:15,15:45 等时间点触发,以此类推,这会错过 23:30。
如果我们需要精确的在 23:00 分钟熄灯,我们最佳的时间间隔应该设置为 1 分钟,即 60 秒,这样我们的熄灯动作不会被错过,且只会被执行一次。