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

简介: 本文介绍了仓颉开发语言中隐藏的计时器功能,涵盖多种计时器模式如 `after`、`once`、`repeat` 等,并提供示例代码与使用技巧。内容详实,适合开发者学习与实践。

今天又到了大家喜闻乐见的科普环节,也可以说是踩坑环节,哈哈哈。今天聊一聊仓颉开发语言中的计时器,这部分可老有意思了。
为什么这么说呢,因为关于仓颉的计时器你几乎搜不到任何的文档,也没有相关的代码提示,可以说是一写一个不吱声。
但是它还是被幽蓝君发现了蛛丝马迹,今天就把它分享给大家。
仓颉的计时器藏在std.sync包里,名字叫Timer,但是使用时只导入Timer包还不够,我们需要导入这几个模块:

import std.time.*
import std.sync.Timer
import std.sync.CatchupStyle

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

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

这行代码的意思是,计时器在一分钟以后执行,然后每分钟执行一次App.info打印。这个模式比较奇怪,它的执行间隔在执行方法中返回。
另一个比较奇怪的地方不知道大家有没有发现,计时器中的延迟时间和执行间隔这两个时间参数使用的是Duration类型的枚举,有设定好的几个值,目前给出的时间值有Zero、second、minute、hour等,可以看到都是时间整数,如果想要一些其他的数值可以在这基础上进行一些加减法。
image.png

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语言##仓颉##购物#

相关文章
|
3月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
3月前
|
IDE 开发工具 开发者
仓颉开发语言入门教程:搭建开发环境
仓颉开发语言是华为为鸿蒙系统自主研发的编程语言,肩负重要使命。本文介绍如何从零搭建仓颉开发环境,重点演示在DevEco Studio中安装插件、配置项目及运行Hello World示例,助力开发者快速上手。
HarmonyOS NEXT仓颉开发语言实战案例:电影App
周末好!本文分享使用仓颉语言重构ArkTS实现的电影App案例,对比两者在UI布局、组件写法及语法差异。内容包括页面结构、列表分组、分类切换与电影展示等。通过代码演示仓颉在HarmonyOS开发中的应用。##仓颉##ArkTS##HarmonyOS开发
|
3月前
|
编译器 程序员 开发者
详解HarmonyOS NEXT系统中ArkTS和仓颉的混合开发
本文介绍了鸿蒙系统中ArkTs与仓颉语言的混合开发方法,讲解了如何通过DevEco Studio创建混合项目、目录结构特点及组件调用方式,强调编译器自动化处理大幅简化开发流程,提升了开发体验。
|
3月前
|
开发者
Uniapp开发鸿蒙应用时如何运行和调试项目
本文介绍了如何将Uniapp项目运行到鸿蒙设备并进行调试。内容包括运行到真机或模拟器的步骤、配置证书的方法、使用console.log打印日志以及在uni-app x项目中设置断点调试的详细流程,帮助开发者提升鸿蒙应用开发效率。
|
3月前
|
移动开发 JavaScript 前端开发
uniapp开发HarmonyOS NEXT应用之项目结构详细解读
本文介绍了uniapp项目目录结构,包括页面、静态资源、入口文件、配置文件等核心组成部分,并解析了各文件的作用与跨平台运行原理。
HarmonyOS NEXT开发教程:全局悬浮窗
今天跟大家分享一下HarmonyOS开发中的悬浮窗。
|
3月前
|
开发者
Uniapp开发鸿蒙应用教程之自定义导航栏
本文介绍了在Uniapp跨平台开发鸿蒙应用时,如何实现自定义导航栏。通过修改pages.json文件可调整默认导航栏样式,但若需添加组件(如搜索框、按钮等),则需手动创建自定义导航栏组件,以适配鸿蒙系统。文中给出了详细的配置代码与实现步骤,帮助开发者灵活控制界面布局。#鸿蒙 #Uniapp #跨平台开发
|
3月前
|
开发者
详解仓颉开发语言中的日志打印问题
本文介绍了仓颉开发语言中的日志打印机制及常见问题。由于仓颉尚处于早期阶段,日志功能存在一定“坑点”。例如,AppLog.info在模拟器中不显示日志,需真机查看;而Hilog则可在模拟器正常打印。此外,VSCode与DevEco创建的项目默认打印方式不同,使用时需注意区分。了解这些细节有助于开发者更高效调试代码。
|
3月前
|
容器
鸿蒙Next仓颉语言开发实战教程:店铺详情页
本文介绍了使用仓颉语言开发HarmonyOS应用中的店铺详情页实现方法,重点讲解了List容器的使用技巧,包括如何布局、设置圆角及处理列表项分组等内容,并附有完整代码示例。