Harmonyos之TaskPool浅学
概述
在开发过程中,多线程是我们非常常见的一种技术。
当前ArkTS提供了TaskPool和Worker两种并发能力,下面 我们来探索下TaskPool的使用方式。
参考链接:
TaskPool的使用
延时任务(executeDelayed)
官方API:
// delayTime: 延时时间 单位毫秒
// task: 需要延时执行的任务
// priority: 延时执行任务的优先级
executeDelayed(delayTime: number, task: Task, priority?: Priority): Promise<Object>
- 无参数、无返回值延时任务
delayedTask() {
console.log('START====================' + DateUtil.getFormatDateStr(new Date()))
//1. 首先我们需要创建一个延时任务
//Task表示任务, 必须要使用concurrent方法来构造Task, 也就是使用@Concurrent修饰的函数
const delayedTask = new taskpool.Task(delayedFunc)
// 执行这个延时任务
taskpool.executeDelayed(2000, delayedTask, taskpool.Priority.HIGH).then((res) => {
console.log('END====================' + DateUtil.getFormatDateStr(new Date()))
})
}
// 延时任务函数
@Concurrent
function delayedFunc(): void {
console.log('delayedFunc =================被执行')
}
输出结果:

- 有参数、有返回值的延时任务
delayedTaskParam() {
console.log('START====================' + DateUtil.getFormatDateStr(new Date()))
//1. 首先我们需要创建一个延时任务
//Task表示任务, 必须要使用concurrent方法来构造Task, 也就是使用@Concurrent修饰的函数
const delayedTask = new taskpool.Task(delayedFundParam, 100, 200)
// 执行这个延时任务
// 其实除了通过.then方法获取返回值时, Arkts还提供了另外一种方式:onReceiveData, 注册回调的方式来接受值,需要再任务执行函数中调用taskpool.Task.sendData(xxx); 可以参考官方文档。
taskpool.executeDelayed(2000, delayedTask, taskpool.Priority.HIGH).then((res) => {
// res是task任务执行后的结果
console.log("res=======================" + JSON.stringify(res))
console.log('END====================' + DateUtil.getFormatDateStr(new Date()))
})
}
// 延时执行函数
@Concurrent
function delayedFundParam(a:

最低0.47元/天 解锁文章
665

被折叠的 条评论
为什么被折叠?



