当前位置: 首页 > article >正文

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

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

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

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

仓颉的计时器藏在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等,可以看到都是时间整数,你如果想要两秒执行一次,或者是二分之一秒执行一次大概是不行的。

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

http://www.lryc.cn/news/2396671.html

相关文章:

  • 【计算机网络】第3章:传输层—拥塞控制原理
  • Vue3(watch,watchEffect,标签中ref的使用,TS,props,生命周期)
  • 【nssctf第三题】[NSSCTF 2022 Spring Recruit]easy C
  • Cocos 打包 APK 兼容环境表(Android API Level 10~15)
  • 数据结构之堆:解析与应用
  • DBeaver导入/导出数据库时报错解决方案
  • GPIO模拟串口通信
  • uniapp与微信小程序开发平台联调无法打开IDE
  • 第十二节:第五部分:集合框架:Set集合的特点、底层原理、哈希表、去重复原理
  • 【C++项目】:仿 muduo 库 One-Thread-One-Loop 式并发服务器
  • 基于大数据的个性化购房推荐系统设计与实现(源码+定制+开发)面向房产电商的智能购房推荐与数据可视化系统 基于Spark与Hive的房源数据挖掘与推荐系统设计
  • FFmpeg学习笔记
  • Chrome 通过FTP,HTTP 调用 Everything 浏览和搜索本地文件系统
  • GpuGeek如何成为AI基础设施市场的中坚力量
  • 【Hot 100】45. 跳跃游戏 II
  • Codeforces Round 1026 (Div. 2) C. Racing
  • Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)
  • oracle sql 语句 优化方法
  • Python数学可视化——显函数、隐函数及复杂曲线的交互式绘图技术
  • 代码随想录打卡|Day51 图论(dijkstra(堆优化版)精讲、Bellman_ford 算法精讲)
  • 【深度剖析】流处理系统性能优化:解决维表JOIN、数据倾斜与数据膨胀问题
  • PostgreSQL优化实践:从查询到架构的性能提升指南
  • AI入门——AI大模型、深度学习、机器学习总结
  • 【AI论文】论文转海报:迈向从科学论文到多模态海报的自动化生成
  • 智慧零工平台前端开发实战:从uni-app到跨平台应用
  • 【Linux】基础文件IO
  • opencv调用模型
  • 由浅入深一文详解同余原理
  • ESP-IDF 离线安装——同时存在多个版本以及进行版本切换的方法
  • android 上位机调试软件-安卓串口 com ttl 调试——仙盟创梦IDE