Skip to content
这一页

定时任务

更新时间:

一些场景下,我们需要每隔一段时间就执行某个动作,我们可以通过定时事件节点来完成

提示

鸿图是基于事件驱动架构(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 秒,这样我们的熄灯动作不会被错过,且只会被执行一次。