写点什么

详解鸿蒙仓颉开发语言中的计时器

作者:幽蓝计划
  • 2025-06-02
    山东
  • 本文字数:979 字

    阅读完需:约 3 分钟

今天又到了大家喜闻乐见的科普环节,也可以说是踩坑环节,哈哈哈。今天聊一聊仓颉开发语言中的计时器,这部分可老有意思了。


为什么这么说呢,因为关于仓颉的计时器你几乎搜不到任何的文档,也没有相关的代码提示,可以说是一写一个不吱声。


但是它还是被幽蓝君发现了蛛丝马迹,今天就把它分享给大家。


仓颉的计时器藏在 std.sync 包里,名字叫 Timer,但是使用时只导入 Timer 包还不够,我们需要导入这几个模块:


import std.time.*import std.sync.Timerimport std.sync.CatchupStyle
复制代码


计时器的写法也是别出心裁,它有几种模式,下面为大家一一介绍


Timer.after(Duration.minute, { =>     AppLog.info('这是after计时器');     return Duration.second    })
复制代码


这行代码的意思是,计时器在一分钟以后执行,然后每分钟执行一次 App.info 打印。这个模式比较奇怪,它的执行间隔在执行方法中返回。


另一个比较奇怪的地方不知道大家有没有发现,计时器中的延迟时间和执行间隔这两个时间参数使用的是 Duration 类型的枚举,就是说只能使用它设定好的几个值,目前给出的时间值有 Zero、second、minute、hour 等,可以看到都是时间整数,你如果想要两秒执行一次,或者是二分之一秒执行一次大概是不行的。



Timer.once(Duration.minute,{=>   AppLog.info('这是once计时器');  })
复制代码


这种模式大家应该一眼就能看出来,这是只执行一次的计时器,延迟时间是一分钟后。


Timer.repeat(Duration.Zero, Duration.second, {=>   AppLog.info('这是repeat计时器');   }, style: CatchupStyle.Skip)
复制代码


repeat 是重复性执行的计时器,Duration.Zero 是延迟执行的时间,Duration.second 是执行的间隔,这里出现了新的参数 style,它的名字叫追平策略,官方给出的解释是:当 Task 执行时间过长时,后续任务执行时间点可能发生延迟,不同的追平策略适用于不同的场景。


Timer.repeatDuring(period: Duration, delay: Duration, interval: Duration, task: () -> Unit, style: CatchupStyle)
复制代码


这个计时器和上面的 repeat 类似,它多了一个参数 period,意思是重复周期的最大持续时间。类似的还有 repeatTimes,它指定了任务的最大执行次数:


Timer.repeatTimes(count: Int64, delay: Duration, interval: Duration, task: () -> Unit, style: CatchupStyle)
复制代码


以上就是关于仓颉开发语言中计时器的详细内容,感谢阅读,再次祝大家假期愉快。#HarmonyOS 语言 ##仓颉 ##购物 #

发布于: 刚刚阅读数: 4
用户头像

幽蓝计划

关注

还未添加个人签名 2025-05-09 加入

还未添加个人简介

评论

发布
暂无评论
详解鸿蒙仓颉开发语言中的计时器_幽蓝计划_InfoQ写作社区